0% found this document useful (0 votes)
43 views

Buy Ebook Introduction To Computing Using Python: An Application Development Focus, 2nd Edition - Ebook PDF Version Cheap Price

ebook

Uploaded by

olgsjuldyz
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
43 views

Buy Ebook Introduction To Computing Using Python: An Application Development Focus, 2nd Edition - Ebook PDF Version Cheap Price

ebook

Uploaded by

olgsjuldyz
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 54

Full download ebook at ebookmass.

com

Introduction to Computing Using Python: An


Application Development Focus, 2nd Edition – Ebook
PDF Version
For dowload this book click link below
https://ebookmass.com/product/introduction-to-
computing-using-python-an-application-development-
focus-2nd-edition-ebook-pdf-version/

OR CLICK BUTTON

DOWLOAD EBOOK

Download more ebook from https://ebookmass.com


More products digital (pdf, epub, mobi) instant
download maybe you interests ...

Society in Focus: An Introduction to Sociology 9th


Edition – Ebook PDF Version

https://ebookmass.com/product/society-in-focus-an-introduction-
to-sociology-9th-edition-ebook-pdf-version/

Introduction To Computing And Problem Solving Using


Python 1st Edition E. Balaguruswamy

https://ebookmass.com/product/introduction-to-computing-and-
problem-solving-using-python-1st-edition-e-balaguruswamy/

Introduction to 80×86 Assembly Language and Computer


Architecture – Ebook PDF Version

https://ebookmass.com/product/introduction-to-8086-assembly-
language-and-computer-architecture-ebook-pdf-version/

Women, Music, Culture: An Introduction, 2nd Edition –


Ebook PDF Version

https://ebookmass.com/product/women-music-culture-an-
introduction-2nd-edition-ebook-pdf-version/
Geosystems: An Introduction to Physical Geography –
Ebook PDF Version

https://ebookmass.com/product/geosystems-an-introduction-to-
physical-geography-ebook-pdf-version/

Introduction to Human Development and Family Studies


1st Edition – Ebook PDF Version

https://ebookmass.com/product/introduction-to-human-development-
and-family-studies-1st-edition-ebook-pdf-version/

The Cultural Landscape: An Introduction to Human


Geography (11th Edition – Ebook PDF Version) – Ebook
PDF Version

https://ebookmass.com/product/the-cultural-landscape-an-
introduction-to-human-geography-11th-edition-ebook-pdf-version-
ebook-pdf-version/

Humanity: An Introduction to Cultural Anthropology 11th


Edition – Ebook PDF Version

https://ebookmass.com/product/humanity-an-introduction-to-
cultural-anthropology-11th-edition-ebook-pdf-version/

Microbiology: An Introduction 12th Edition – Ebook PDF


Version

https://ebookmass.com/product/microbiology-an-introduction-12th-
edition-ebook-pdf-version/
Contents
Preface xix
Online Textbook Supplements . . . . . . . . . . . . . . xx
For Students: How to Read This Book . . . . . . . . . . . xx
Overview of the Book . . . . . . . . . . . . . . . . . . xxi
What Is New in This Edition? . . . . . . . . . . . . . . . xxiv
For Instructors: How to Use This Book . . . . . . . . . . . xxv

1
Introduction to Computer Science 1
1.1 Computer Science . . . . . . . . . . . . . . . . . . . 2
What Do Computing Professionals Do? . . . . . . . . . . 2
Models, Algorithms, and Programs. . . . . . . . . . . . 3
Tools of the Trade . . . . . . . . . . . . . . . . . 3
What Is Computer Science? . . . . . . . . . . . . . . 4
1.2 Computer Systems . . . . . . . . . . . . . . . . . . . 4
Computer Hardware . . . . . . . . . . . . . . . . 4
Operating Systems . . . . . . . . . . . . . . . . . 5
Networks and Network Protocols . . . . . . . . . . . . 6
Programming Languages . . . . . . . . . . . . . . . 7
Software Libraries . . . . . . . . . . . . . . . . . 7
1.3 Python Programming Language . . . . . . . . . . . . . 8
Short History of Python . . . . . . . . . . . . . . . 8
Setting Up the Python Development Environment . . . . . . . 8
1.4 Computational Thinking . . . . . . . . . . . . . . . . . 9
A Sample Problem . . . . . . . . . . . . . . . . . 9
Abstraction and Modeling . . . . . . . . . . . . . . . 10
Algorithm . . . . . . . . . . . . . . . . . . . . 10
Data Types . . . . . . . . . . . . . . . . . . . 11
Assignments and Execution Control Structures . . . . . . . 12
Chapter Summary . . . . . . . . . . . . . . . . . . . . . 13

vii
viii Contents

2
Python Data Types 15
2.1 Expressions, Variables, and Assignments . . . . . . . . . . 16
Algebraic Expressions and Functions . . . . . . . . . . . 16
Boolean Expressions and Operators . . . . . . . . . . . 18
Variables and Assignments . . . . . . . . . . . . . . 20
Variable Names . . . . . . . . . . . . . . . . . . 22
2.2 Strings . . . . . . . . . . . . . . . . . . . . . . . . 23
String Operators . . . . . . . . . . . . . . . . . . 23
Indexing Operator . . . . . . . . . . . . . . . . . 25
2.3 Lists and Tuples . . . . . . . . . . . . . . . . . . . . 27
List Operators . . . . . . . . . . . . . . . . . . 27
Lists Are Mutable, Strings Are Not . . . . . . . . . . . . 29
Tuples, or “Immutable Lists” . . . . . . . . . . . . . . 29
List and Tuple Methods . . . . . . . . . . . . . . . 31
2.4 Objects and Classes . . . . . . . . . . . . . . . . . . 33
Object Type . . . . . . . . . . . . . . . . . . . 33
Valid Values for Number Types . . . . . . . . . . . . . 35
Operators for Number Types . . . . . . . . . . . . . . 36
Creating Objects . . . . . . . . . . . . . . . . . . 37
Implicit Type Conversions . . . . . . . . . . . . . . . 38
Explicit Type Conversions. . . . . . . . . . . . . . . 39
Class Methods and Object-Oriented Programming . . . . . . 40
2.5 Python Standard Library. . . . . . . . . . . . . . . . . 41
Module math . . . . . . . . . . . . . . . . . . . 41
Module fractions . . . . . . . . . . . . . . . . . 42
Case Study: Turtle Graphics . . . . . . . . . . . . . . . . . 43
Chapter Summary . . . . . . . . . . . . . . . . . . . . . 43
Solutions to Practice Problems . . . . . . . . . . . . . . . . 44
Exercises . . . . . . . . . . . . . . . . . . . . . . . . 45

3
Imperative Programming 51
3.1 Python Programs . . . . . . . . . . . . . . . . . . . 52
Our First Python Program. . . . . . . . . . . . . . . 52
Python Modules . . . . . . . . . . . . . . . . . . 54
Built-In Function print() . . . . . . . . . . . . . . 54
Interactive Input with input() . . . . . . . . . . . . . 55
Function eval() . . . . . . . . . . . . . . . . . . 56
Contents ix

3.2 Execution Control Structures . . . . . . . . . . . . . . . 57


One-Way Decisions . . . . . . . . . . . . . . . . . 57
Two-Way Decisions . . . . . . . . . . . . . . . . . 60
Iteration Structures . . . . . . . . . . . . . . . . . 62
Nesting Control Flow Structures . . . . . . . . . . . . 65
Function range() . . . . . . . . . . . . . . . . . 66
3.3 User-Defined Functions . . . . . . . . . . . . . . . . . 67
Our First Function . . . . . . . . . . . . . . . . . 67
Function Input Arguments. . . . . . . . . . . . . . . 68
print() versus return . . . . . . . . . . . . . . . 70
Function Definitions Are “Assignment” Statements . . . . . . 71
Comments . . . . . . . . . . . . . . . . . . . . 72
Docstrings . . . . . . . . . . . . . . . . . . . . 72
3.4 Python Variables and Assignments . . . . . . . . . . . . 74
Mutable and Immutable Types . . . . . . . . . . . . . 75
Assignments and Mutability . . . . . . . . . . . . . . 76
Swapping . . . . . . . . . . . . . . . . . . . . 77
3.5 Parameter Passing . . . . . . . . . . . . . . . . . . . 78
Immutable Parameter Passing . . . . . . . . . . . . . 79
Mutable Parameter Passing . . . . . . . . . . . . . . 80
Case Study: Automating Turtle Graphics . . . . . . . . . . . . 81
Chapter Summary . . . . . . . . . . . . . . . . . . . . . 81
Solutions to Practice Problems . . . . . . . . . . . . . . . . 82
Exercises . . . . . . . . . . . . . . . . . . . . . . . . 85
Problems . . . . . . . . . . . . . . . . . . . . . . . . 86

4
Text Data, Files, and Exceptions 91
4.1 Strings, Revisited . . . . . . . . . . . . . . . . . . . 92
String Representations. . . . . . . . . . . . . . . . 92
The Indexing Operator, Revisited . . . . . . . . . . . . 94
String Methods . . . . . . . . . . . . . . . . . . 95
4.2 Formatted Output . . . . . . . . . . . . . . . . . . . 98
Function print() . . . . . . . . . . . . . . . . . 98
String Method format() . . . . . . . . . . . . . . . 100
Lining Up Data in Columns . . . . . . . . . . . . . . 102
Getting and Formatting the Date and Time . . . . . . . . . 105
4.3 Files. . . . . . . . . . . . . . . . . . . . . . . . . 107
File System . . . . . . . . . . . . . . . . . . . 107
Opening and Closing a File . . . . . . . . . . . . . . 109
Patterns for Reading a Text File . . . . . . . . . . . . . 112
Writing to a Text File . . . . . . . . . . . . . . . . 115
x Contents

4.4 Errors and Exceptions . . . . . . . . . . . . . . . . . 116


Syntax Errors . . . . . . . . . . . . . . . . . . . 116
Built-In Exceptions . . . . . . . . . . . . . . . . . 117
Case Study: Image Files . . . . . . . . . . . . . . . . . . 119
Chapter Summary . . . . . . . . . . . . . . . . . . . . . 119
Solutions to Practice Problems . . . . . . . . . . . . . . . . 120
Exercises . . . . . . . . . . . . . . . . . . . . . . . . 121
Problems . . . . . . . . . . . . . . . . . . . . . . . . 124

5
Execution Control Structures 127

5.1 Decision Control and the if Statement . . . . . . . . . . . 128


Three-Way (and More!) Decisions . . . . . . . . . . . . 128
Ordering of Conditions . . . . . . . . . . . . . . . . 130
5.2 for Loop and Iteration Patterns . . . . . . . . . . . . . . 131
Loop Pattern: Iteration Loop . . . . . . . . . . . . . . 131
Loop Pattern: Counter Loop . . . . . . . . . . . . . . 132
Loop Pattern: Accumulator Loop . . . . . . . . . . . . 134
Accumulating Different Types . . . . . . . . . . . . . 135
Loop Patterns: Nested Loop . . . . . . . . . . . . . . 137
5.3 More on Lists: Two-Dimensional Lists . . . . . . . . . . . 139
Two-Dimensional Lists . . . . . . . . . . . . . . . . 140
Two-Dimensional Lists and the Nested Loop Pattern . . . . . . 141
5.4 while Loop. . . . . . . . . . . . . . . . . . . . . . 143
while Loop Usage . . . . . . . . . . . . . . . . . 143
5.5 More Loop Patterns . . . . . . . . . . . . . . . . . . 145
Iteration Patterns: Sequence Loop . . . . . . . . . . . . 145
Loop Pattern: Infinite Loop . . . . . . . . . . . . . . 147
Loop Pattern: Loop and a Half . . . . . . . . . . . . . 147
5.6 Additional Iteration Control Statements . . . . . . . . . . . 149
break Statement . . . . . . . . . . . . . . . . . 149
continue Statement . . . . . . . . . . . . . . . . 150
pass Statement . . . . . . . . . . . . . . . . . . 151
Case Study: Image Processing . . . . . . . . . . . . . . . . 151
Chapter Summary . . . . . . . . . . . . . . . . . . . . . 151
Solutions to Practice Problems . . . . . . . . . . . . . . . . 152
Exercises . . . . . . . . . . . . . . . . . . . . . . . . 155
Problems . . . . . . . . . . . . . . . . . . . . . . . . 157
Contents xi

6
Containers and Randomness 165
6.1 Dictionaries . . . . . . . . . . . . . . . . . . . . . . 166
User-Defined Indexes as Motivation for Dictionaries . . . . . . 166
Dictionary Class Properties . . . . . . . . . . . . . . 167
Dictionary Operators . . . . . . . . . . . . . . . . 169
Dictionary Methods . . . . . . . . . . . . . . . . . 170
A Dictionary as a Substitute for the Multiway if Statement. . . . 173
Dictionary as a Collection of Counters . . . . . . . . . . 173
tuple Objects Can Be Dictionary Keys . . . . . . . . . . 176
6.2 Sets . . . . . . . . . . . . . . . . . . . . . . . . . 177
Using the set Constructor to Remove Duplicates . . . . . . . 178
set Operators . . . . . . . . . . . . . . . . . . 179
set Methods . . . . . . . . . . . . . . . . . . . 180
6.3 Character Encodings and Strings . . . . . . . . . . . . . 181
Character Encodings . . . . . . . . . . . . . . . . 181
ASCII . . . . . . . . . . . . . . . . . . . . . 182
Unicode . . . . . . . . . . . . . . . . . . . . 183
UTF-8 Encoding for Unicode Characters . . . . . . . . . . 185
6.4 Module random . . . . . . . . . . . . . . . . . . . . 186
Choosing a Random Integer . . . . . . . . . . . . . . 187
Choosing a Random “Real” . . . . . . . . . . . . . . 188
Shuffling, Choosing, and Sampling at Random . . . . . . . . 189
Case Study: Games of Chance. . . . . . . . . . . . . . . . 190
Chapter Summary . . . . . . . . . . . . . . . . . . . . . 190
Solutions to Practice Problems . . . . . . . . . . . . . . . . 190
Exercises . . . . . . . . . . . . . . . . . . . . . . . . 194
Problems . . . . . . . . . . . . . . . . . . . . . . . . 195

7
Namespaces 203
7.1 Encapsulation in Functions. . . . . . . . . . . . . . . . 204
Code Reuse . . . . . . . . . . . . . . . . . . . 204
Modularity (or Procedural Decomposition) . . . . . . . . . 205
Encapsulation (or Information Hiding) . . . . . . . . . . . 205
Local Variables . . . . . . . . . . . . . . . . . . 205
Namespaces Associated with Function Calls . . . . . . . . 206
Namespaces and the Program Stack . . . . . . . . . . . 207
xii Contents

7.2 Global versus Local Namespaces . . . . . . . . . . . . . 211


Global Variables . . . . . . . . . . . . . . . . . . 211
Variables with Local Scope . . . . . . . . . . . . . . 212
Variables with Global Scope . . . . . . . . . . . . . . 212
Changing Global Variables Inside a Function . . . . . . . . 214
7.3 Exceptional Control Flow . . . . . . . . . . . . . . . . 215
Exceptions and Exceptional Control Flow . . . . . . . . . 215
Catching and Handling Exceptions . . . . . . . . . . . . 216
The Default Exception Handler . . . . . . . . . . . . . 218
Catching Exceptions of a Given Type . . . . . . . . . . . 218
Multiple Exception Handlers . . . . . . . . . . . . . . 219
Controlling the Exceptional Control Flow . . . . . . . . . . 220
7.4 Modules as Namespaces . . . . . . . . . . . . . . . . 223
Module Attributes . . . . . . . . . . . . . . . . . 223
What Happens When Importing a Module . . . . . . . . . 224
Module Search Path . . . . . . . . . . . . . . . . 224
Top-Level Module . . . . . . . . . . . . . . . . . 226
Different Ways to Import Module Attributes . . . . . . . . . 228
7.5 Classes as Namespaces . . . . . . . . . . . . . . . . 230
A Class Is a Namespace . . . . . . . . . . . . . . . 230
Class Methods Are Functions Defined in the Class Namespace . . 231
Case Study: Debugging with a debugger . . . . . . . . . . . . 231
Chapter Summary . . . . . . . . . . . . . . . . . . . . . 232
Solutions to Practice Problems . . . . . . . . . . . . . . . . 232
Exercises . . . . . . . . . . . . . . . . . . . . . . . . 233
Problems . . . . . . . . . . . . . . . . . . . . . . . . 236

8
Object-Oriented Programming 239
8.1 Defining a New Python Class. . . . . . . . . . . . . . . 240
Methods of Class Point . . . . . . . . . . . . . . . 240
A Class and Its Namespace . . . . . . . . . . . . . . 241
Every Object Has an Associated Namespace . . . . . . . . 242
Implementation of Class Point . . . . . . . . . . . . . 242
Instance Variables . . . . . . . . . . . . . . . . . 243
Instances Inherit Class Attributes . . . . . . . . . . . . 244
Class Definition, More Generally . . . . . . . . . . . . 245
Documenting a Class . . . . . . . . . . . . . . . . 246
Class Animal . . . . . . . . . . . . . . . . . . . 247
8.2 Examples of User-Defined Classes . . . . . . . . . . . . 248
Overloaded Constructor Operator . . . . . . . . . . . . 248
Default Constructor . . . . . . . . . . . . . . . . . 249
Playing Card Class . . . . . . . . . . . . . . . . . 250
Contents xiii

8.3 Designing New Container Classes. . . . . . . . . . . . . 251


Designing a Class Representing a Deck of Playing Cards . . . . 251
Implementing the Deck (of Cards) Class . . . . . . . . . . 252
Container Class Queue . . . . . . . . . . . . . . . 254
Implementing a Queue Class . . . . . . . . . . . . . 255
8.4 Overloaded Operators . . . . . . . . . . . . . . . . . 256
Operators Are Class Methods . . . . . . . . . . . . . 257
Making the Class Point User Friendly . . . . . . . . . . 258
Contract between the Constructor and the repr() Operator . . . 260
Making the Queue Class User Friendly . . . . . . . . . . 262
8.5 Inheritance . . . . . . . . . . . . . . . . . . . . . . 264
Inheriting Attributes of a Class . . . . . . . . . . . . . 264
Class Definition, in General . . . . . . . . . . . . . . 267
Overriding Superclass Methods . . . . . . . . . . . . . 267
Extending Superclass Methods . . . . . . . . . . . . . 270
Implementing a Queue Class by Inheriting from list . . . . . 271
8.6 User-Defined Exceptions . . . . . . . . . . . . . . . . 272
Raising an Exception . . . . . . . . . . . . . . . . 273
User-Defined Exception Classes . . . . . . . . . . . . 274
Improving the Encapsulation of Class Queue . . . . . . . . 274
Case Study: Indexing and Iterators . . . . . . . . . . . . . . 275
Chapter Summary . . . . . . . . . . . . . . . . . . . . . 275
Solutions to Practice Problems . . . . . . . . . . . . . . . . 276
Exercises . . . . . . . . . . . . . . . . . . . . . . . . 279
Problems . . . . . . . . . . . . . . . . . . . . . . . . 281

9
Graphical User Interfaces 291
9.1 Basics of tkinter GUI Development . . . . . . . . . . . 292
Widget Tk: The GUI Window. . . . . . . . . . . . . . 292
Widget Label for Displaying Text . . . . . . . . . . . . 292
Displaying Images . . . . . . . . . . . . . . . . . 294
Packing Widgets . . . . . . . . . . . . . . . . . . 295
Arranging Widgets in a Grid . . . . . . . . . . . . . . 297
9.2 Event-Based tkinter Widgets . . . . . . . . . . . . . . 299
Button Widget and Event Handlers . . . . . . . . . . . 299
Events, Event Handlers, and mainloop() . . . . . . . . . 301
The Entry Widget . . . . . . . . . . . . . . . . . 302
Text Widget and Binding Events . . . . . . . . . . . . 305
Event Patterns and the tkinter Class Event . . . . . . . . 306
9.3 Designing GUIs . . . . . . . . . . . . . . . . . . . . 308
Widget Canvas . . . . . . . . . . . . . . . . . . 308
Widget Frame as an Organizing Widget . . . . . . . . . . 311
xiv Contents

9.4 OOP for GUIs . . . . . . . . . . . . . . . . . . . . . 313


GUI OOP Basics. . . . . . . . . . . . . . . . . . 313
Shared Widgets Are Assigned to Instance Variables . . . . . . 315
Shared Data Are Assigned to Instance Variables . . . . . . . 317
Case Study: Developing a Calculator . . . . . . . . . . . . . 318
Chapter Summary . . . . . . . . . . . . . . . . . . . . . 319
Solutions to Practice Problems . . . . . . . . . . . . . . . . 319
Exercises . . . . . . . . . . . . . . . . . . . . . . . . 323
Problems . . . . . . . . . . . . . . . . . . . . . . . . 324

10
Recursion 329
10.1 Introduction to Recursion . . . . . . . . . . . . . . . . 330
Functions that Call Themselves . . . . . . . . . . . . . 330
Stopping Condition . . . . . . . . . . . . . . . . . 331
Properties of Recursive Functions . . . . . . . . . . . . 332
Recursive Thinking . . . . . . . . . . . . . . . . . 332
Recursive Function Calls and the Program Stack . . . . . . . 334
10.2 Examples of Recursion. . . . . . . . . . . . . . . . . 336
Recursive Number Sequence Pattern . . . . . . . . . . . 336
Fractals . . . . . . . . . . . . . . . . . . . . . 338
Virus Scanner . . . . . . . . . . . . . . . . . . 342
Linear recursion . . . . . . . . . . . . . . . . . . 345
10.3 Run Time Analysis . . . . . . . . . . . . . . . . . . 347
The Exponent Function . . . . . . . . . . . . . . . 347
Counting Operations . . . . . . . . . . . . . . . . 349
Fibonacci Sequence . . . . . . . . . . . . . . . . 349
Experimental Analysis of Run Time . . . . . . . . . . . 351
10.4 Searching . . . . . . . . . . . . . . . . . . . . . . 354
Linear Search. . . . . . . . . . . . . . . . . . . 354
Binary Search . . . . . . . . . . . . . . . . . . 354
Linear versus Binary Search . . . . . . . . . . . . . . 356
Uniqueness Testing . . . . . . . . . . . . . . . . . 357
Selecting the kth Largest (Smallest) Item. . . . . . . . . . 358
Computing the Most Frequently Occurring Item . . . . . . . 359
Case Study: Tower of Hanoi . . . . . . . . . . . . . . . . . 359
Chapter Summary . . . . . . . . . . . . . . . . . . . . . 360
Solutions to Practice Problems . . . . . . . . . . . . . . . . 360
Exercises . . . . . . . . . . . . . . . . . . . . . . . . 362
Problems . . . . . . . . . . . . . . . . . . . . . . . . 363
Contents xv

11
The Web and Search 371
11.1 The World Wide Web . . . . . . . . . . . . . . . . . 372
Web Servers and Web Clients . . . . . . . . . . . . . 372
“Plumbing” of the WWW . . . . . . . . . . . . . . . 373
Naming Scheme: Uniform Resource Locator . . . . . . . . 373
Protocol: HyperText Transfer Protocol . . . . . . . . . . . 374
HyperText Markup Language . . . . . . . . . . . . . 375
HTML Elements . . . . . . . . . . . . . . . . . . 376
Tree Structure of an HTML Document. . . . . . . . . . . 377
Anchor HTML Element and Absolute Links . . . . . . . . . 377
Relative Links. . . . . . . . . . . . . . . . . . . 378
11.2 Python WWW API . . . . . . . . . . . . . . . . . . 379
Module urllib.request . . . . . . . . . . . . . . 379
Module html.parser . . . . . . . . . . . . . . . . 381
Overriding the HTMLParser Handlers . . . . . . . . . . . 383
Module urllib.parse . . . . . . . . . . . . . . . 384
Parser That Collects HTTP Hyperlinks . . . . . . . . . . 385
11.3 String Pattern Matching . . . . . . . . . . . . . . . . 387
Regular Expressions . . . . . . . . . . . . . . . . 387
Python Standard Library Module re . . . . . . . . . . . 390
Case Study: Web Crawler . . . . . . . . . . . . . . . . . . 391
Chapter Summary . . . . . . . . . . . . . . . . . . . . . 392
Solutions to Practice Problems . . . . . . . . . . . . . . . . 392
Exercises . . . . . . . . . . . . . . . . . . . . . . . . 394
Problems . . . . . . . . . . . . . . . . . . . . . . . . 395

12
Databases and Data Processing 399
12.1 Databases and SQL . . . . . . . . . . . . . . . . . . 400
Database Tables. . . . . . . . . . . . . . . . . . 400
Structured Query Language . . . . . . . . . . . . . . 402
Statement SELECT . . . . . . . . . . . . . . . . . 402
Clause WHERE . . . . . . . . . . . . . . . . . . 404
Built-In SQL Functions . . . . . . . . . . . . . . . . 406
Clause GROUP BY . . . . . . . . . . . . . . . . . 406
Making SQL Queries Involving Multiple Tables . . . . . . . . 407
Statement CREATE TABLE . . . . . . . . . . . . . . 409
Statements INSERT and UPDATE . . . . . . . . . . . . 409
xvi Contents

12.2 Database Programming in Python . . . . . . . . . . . . 410


Database Engines and SQLite . . . . . . . . . . . . . 410
Creating a Database with sqlite3 . . . . . . . . . . . 411
Committing to Database Changes and Closing the Database . . . 412
Querying a Database Using sqlite3 . . . . . . . . . . . 413
12.3 Functional Language Approach . . . . . . . . . . . . . 415
List Comprehension . . . . . . . . . . . . . . . . 415
MapReduce Problem-Solving Framework . . . . . . . . . 417
MapReduce, in the Abstract . . . . . . . . . . . . . . 420
Inverted Index . . . . . . . . . . . . . . . . . . 421
12.4 Parallel Computing . . . . . . . . . . . . . . . . . . 423
Parallel Computing . . . . . . . . . . . . . . . . . 423
Class Pool of Module multiprocessing . . . . . . . . . 424
Parallel Speedup . . . . . . . . . . . . . . . . . 427
MapReduce, in Parallel . . . . . . . . . . . . . . . 428
Parallel versus Sequential MapReduce . . . . . . . . . . 429
Case Study: Data Interchange . . . . . . . . . . . . . . . . 431
Chapter Summary . . . . . . . . . . . . . . . . . . . . . 432
Solutions to Practice Problems . . . . . . . . . . . . . . . . 432
Exercises . . . . . . . . . . . . . . . . . . . . . . . . 435
Problems . . . . . . . . . . . . . . . . . . . . . . . . 436

Case Studies 441


CS.2 Turtle Graphics . . . . . . . . . . . . . . . . . . . 442
Classes Screen and Turtle . . . . . . . . . . . . . 442
Solution to the Practice Problem . . . . . . . . . . . . 446
Problems . . . . . . . . . . . . . . . . . . . . 446
CS.3 Automating Turtle Graphics. . . . . . . . . . . . . . . 448
Function jump() . . . . . . . . . . . . . . . . . . 448
Solution to the Practice Problem . . . . . . . . . . . . 450
Problems . . . . . . . . . . . . . . . . . . . . 450
CS.4 Processing Image Files . . . . . . . . . . . . . . . . 452
Class Image in Module PIL.Image . . . . . . . . . . . 452
Image Size, Format, and Mode . . . . . . . . . . . . . 453
Image Class Methods . . . . . . . . . . . . . . . . 454
Creating and Saving a New Image . . . . . . . . . . . . 455
Solution to the Practice Problem . . . . . . . . . . . . 456
Problems . . . . . . . . . . . . . . . . . . . . 457
CS.5 Image-Processing Algorithms . . . . . . . . . . . . . . 458
Accessing Pixels. . . . . . . . . . . . . . . . . . 458
Copying an Image . . . . . . . . . . . . . . . . . 459
Rotating an Image by 90 Degrees . . . . . . . . . . . . 459
Applying an Image Filter . . . . . . . . . . . . . . . 461
Solutions to Practice Problems . . . . . . . . . . . . . 463
Problems . . . . . . . . . . . . . . . . . . . . 464
Contents xvii

CS.6 Games of Chance . . . . . . . . . . . . . . . . . . 465


Blackjack . . . . . . . . . . . . . . . . . . . . 465
Creating and Shuffling the Deck of Cards . . . . . . . . . 466
Dealing a Card . . . . . . . . . . . . . . . . . . 467
Computing the Value of a Hand . . . . . . . . . . . . . 467
Comparing the Player’s and the House’s Hands . . . . . . . 468
Main Blackjack Function . . . . . . . . . . . . . . . 468
Problems . . . . . . . . . . . . . . . . . . . . 469
CS.7 Debugging with a Debugger . . . . . . . . . . . . . . 471
Debugging Commands . . . . . . . . . . . . . . . 471
Analyzing the Program Stack . . . . . . . . . . . . . 474
Solution to the Practice Problem . . . . . . . . . . . . 476
Problems . . . . . . . . . . . . . . . . . . . . 477
CS.8 Indexing and Iterators . . . . . . . . . . . . . . . . . 479
Overloading the Indexing Operators . . . . . . . . . . . 479
Iterators and OOP Design Patterns . . . . . . . . . . . 481
Solutions to Practice Problems . . . . . . . . . . . . . 484
Problems . . . . . . . . . . . . . . . . . . . . 484
CS.9 Developing a Calculator . . . . . . . . . . . . . . . . 486
The Calculator Buttons and Passing Arguments to Handlers . . . 486
Implementing the “Unofficial” Event Handler click() . . . . . 488
Solution to the Practice Problem . . . . . . . . . . . . 490
Problems . . . . . . . . . . . . . . . . . . . . 490
CS.10 Tower of Hanoi . . . . . . . . . . . . . . . . . . . 492
The Recursive Solution . . . . . . . . . . . . . . . 493
Classes Peg and Disk . . . . . . . . . . . . . . . . 495
Problems . . . . . . . . . . . . . . . . . . . . 497
CS.11 Web Crawlers . . . . . . . . . . . . . . . . . . . 498
Recursive Crawler, Version 0.1 . . . . . . . . . . . . . 498
Recursive Crawler, Version 0.2 . . . . . . . . . . . . . 500
The Web Page Content Analysis . . . . . . . . . . . . 502
Solution to the Practice Problem . . . . . . . . . . . . 504
Problems . . . . . . . . . . . . . . . . . . . . 505
CS.12 Data Interchange . . . . . . . . . . . . . . . . . . 506
Serialization and Data Interchange Formats. . . . . . . . . 506
JSON (JavaScript Object Notation) . . . . . . . . . . . 506
Data Compression . . . . . . . . . . . . . . . . . 508
I/O Streams . . . . . . . . . . . . . . . . . . . 510
Solution to the Practice Problems . . . . . . . . . . . . 512
Problems . . . . . . . . . . . . . . . . . . . . 513

Index 514
Preface
This textbook is an introduction to programming, computer application development, and
the science of computing. It is meant to be used in a college-level introductory programming
course. More than just an introduction to programming, the book is a broad introduction to
computer science concepts and to the tools used for modern computer application develop-
ment.

The computer programming language used in the book is Python, a language that has a
gentler learning curve than most. Python comes with powerful software libraries that make
complex tasks—such as developing a graphics application or finding all the links in a web
page—a breeze. In this textbook, we leverage the ease of learning Python and the ease of
using its libraries to do more computer science and to add a focus on modern application
development. The result is a textbook that is a broad introduction to the field of computing
and modern application development.

The textbook’s pedagogical approach is to introduce computing concepts and Python


programming in a breadth-first manner. Rather than covering computing concepts and Python
structures one after another, the book’s approach is more akin to learning a natural language,
starting from a small general-purpose vocabulary and then gradually extending it. The pre-
sentation is in general problem oriented, and computing concepts, Python structures, algo-
rithmic techniques, and other tools are introduced when needed, using a “right tool at the
right moment” model.

The book uses the imperative-first and procedural-first paradigm but does not shy away
from discussing objects early. User-defined classes and object-oriented programming are
covered later, when they can be motivated and students are ready. The last three chapters of
the textbook and the associated case studies use the context of web crawling, search engines,
and data mining to introduce a broad array of topics. These include foundational concepts
such as recursion, regular expressions, depth-first search, data compression, and Google’s
MapReduce framework, as well as practical tools such as GUI widgets, HTML parsers,
SQL, JSON, I/O streams, and multicore programming.

This textbook can be used in a course that introduces computer science and program-
ming to computer science majors. Its broad coverage of foundational computer science top-
ics as well as current technologies will give the student a broad understanding of the field
and a confidence to develop “real” modern applications that interact with the web and/or a
database. The textbook’s broad coverage also makes it ideal for students who need to master
programming and key computing concepts but will not take more than one or two computing
courses.

xix
xx Preface

The Book’s Technical Features


The textbook has a number of features that engage students and encourage them to get their
hands dirty. For one, the book makes heavy use of examples that use the Python interactive
shell. Students can easily reproduce these one-liners on their own. After doing so, students
will likely continue experimenting further using the immediate feedback of the interactive
shell.
Throughout the textbook, there are inline practice problems whose purpose is to rein-
force concepts just covered. The solutions to these problems appear at the end of the corre-
sponding chapter or case study, allowing students to check their solution or take a peek in
case they are stuck.
The textbook uses Caution boxes to warn students of potential pitfalls. It also uses Detour
boxes to briefly explore interesting but tangential topics. The large number of boxes, practice
problems, figures, and tables create visual breaks in the text, making reading the volume
more approachable for students.
Finally, the textbook contains a large number of end-of-chapter problems, many of which
are unlike problems typically found in an introductory textbook.
The E-Book Edition of the textbook includes additional material consisting of 11 case
studies. Each case study is associated with a chapter (2 through 12) and showcases the
concepts and tools covered in the chapter in context. The case studies include additional
problems, including practice problems with solutions.

Online Textbook Supplements


These textbook supplements are available on the textbook web site:

• PowerPoint slides for each chapter


• Learning objectives for each section
• Code examples appearing in the book
• Exercise and problem solutions (for instructors only)
• Exam problems (for instructors only)

For Students: How to Read This Book


This book is meant to help you master programming and develop computational thinking
skills. Programming and computational thinking are hands-on activities that require a com-
puter with a Python integrated development environment as well as a pen and paper for
“back-of-the-envelope” calculations. Ideally, you should have those tools next to you as you
read this book.
The book makes heavy use of small examples that use Python’s interactive shell. Try
running those examples in your shell. Feel free to experiment further. It’s very unlikely the
computer will burst into flames if you make a mistake!
You should also attempt to solve all the practice problems as they appear in the text.
Problem solutions appear at the end of the corresponding chapter. If you get stuck, it’s OK
to peek at the solution; after doing so, try solving the problem without peeking.
The text uses Caution boxes to warn you of potential pitfalls. These are very important
and should not be skipped. The Detour boxes, however, discuss topics that are only tangen-
Preface xxi

tially related to the main discussion. You may skip those if you like. Or you may go further
and explore the topics in more depth if you get intrigued.
At some point while reading this text, you may get inspired to develop your own app,
whether a card game or an app that keeps track of a set of stock market indexes in real time.
If so, just go ahead and try it! You will learn a lot.

Overview of the Book


This textbook consists of 12 chapters that introduce computing concepts and Python pro-
gramming in a breadth-first manner. The E-Book Edition also includes case studies that
showcase concepts and tools covered in the chapters in context.

Tour of Python and Computer Science


Chapter 1 introduces the basic computing concepts and terminology. Starting with a dis-
cussion of what computer science is and what developers do, the concepts of modeling,
algorithm development, and programming are defined. The chapter describes the computer
scientist’s and application developer’s toolkit, from logic to systems, with an emphasis on
programming languages, the Python development environment, and computational think-
ing.
Chapter 2 covers core built-in Python data types: the integer, Boolean, floating-point,
string, list, and tuple types. To illustrate the features of the different types, the Python interac-
tive shell is used. Rather than being comprehensive, the presentation focuses on the purpose
of each type and the differences and similarities between the types. This approach motivates
a more abstract discussion of objects and classes that is ultimately needed for mastering the
proper usage of data types. Case Study CS.2 takes advantage of this discussion to introduce
Turtle graphics classes that enable students to do simple, fun graphics interactively.
Chapter 3 introduces imperative and procedural programming, including basic execu-
tion control structures. This chapter presents programs as a sequence of Python statements
stored in a file. To control how the statements are executed, basic conditional and iterative
control structures are introduced: the one-way and two-way if statements as well as the
simplest for loop patterns of iterating through an explicit sequence or a range of numbers.
The chapter introduces functions as a way to neatly package a small application; it also
builds on the material on objects and classes covered in Chapter 2 to describe how Python
does assignments and parameter passing. Case Study CS.3 uses the visual context of Turtle
graphics to motivate automation through programs and abstraction through functions.
The first three chapters provide a shallow but broad introduction to Python program-
ming and computers science. Core Python data types and basic execution control structures
are introduced so students can write simple but complete programs early. Functions are in-
troduced early as well to help students conceptualize what a program is doing, that is, what
inputs it takes and what output it produces. In other words, abstraction and encapsulation of
functions is used to help students better understand programs.

Focus on Algorithmic Thinking


Chapter 4 covers text and file processing in more depth. It continues the coverage of strings
from Chapter 2 with a discussion of string value representations, string operators and meth-
ods, and formatted output. File input/output (I/O) is introduced as well and, in particular,
the different patterns for reading text files. Finally, the context of file I/O is used to motivate
xxii Preface

a discussion of exceptions and the different types of exceptions in Python. Case Study CS.4
discusses how image files (typically stored as binary files rather than text files) are read and
written and how images can be processed using Python.
Chapter 5 covers execution control structures and loop patterns in depth. Basic condi-
tional and iteration structures were introduced in Chapter 3 and then used in Chapter 4 (e.g.,
in the context of reading files). Chapter 5 starts with a discussion of multiway conditional
statements. The bulk of the chapter is spent on describing the different loop patterns: the
various ways for loops and while loops are used. Multidimensional lists are introduced as
well, in the context of the nested loop pattern. More than just covering Python loop struc-
tures, this core chapter describes the different ways that problems can be broken down.
Thus, the chapter fundamentally is about problem solving and algorithms. Case Study CS.5
looks underneath the hood of image processing and describes how classic image processing
algorithms can be implemented.
Chapter 6 completes the textbook’s coverage of Python’s built-in container data types
and their usage. The dictionary, set, and tuple data types are motivated and introduced. This
chapter also completes the coverage of strings with a discussion of character encodings and
Unicode. Finally, the concept of randomness is introduced in the context of selecting and
permuting items in containers. Case Study CS.6 makes use of concepts introduced in this
chapter to show how a blackjack application can be developed.
Chapters 4 through 6 represent the second layer in the breadth-first approach this text-
book takes. One of the main challenges students face in an introductory programming course
is mastering conditional and iteration structures and, more generally, the computational
problem-solving and algorithm development skills. The critical Chapter 5, on patterns of
applying execution control structures, appears after students have been using basic condi-
tional statements and iteration patterns for several weeks and have gotten somewhat com-
fortable with the Python language. Having gained some comfort with the language and basic
iteration, students can focus on the algorithmic issues rather than less fundamental issues,
such as properly reading input or formatting output.

Managing Program Complexity


Chapter 7 shifts gears and focuses on the software development process itself and the prob-
lem of managing larger, more complex programs. It introduces namespaces as the founda-
tion for managing program complexity. The chapter builds on the coverage of functions and
parameter passing in Chapter 3 to motivate the software engineering goals of code reuse,
modularity, and encapsulation. Functions, modules, and classes are tools that can be used to
achieve these goals, fundamentally because they define separate namespaces. The chapter
describes how namespaces are managed during normal control flow and during exceptional
control flow, when exceptions are handled by exception handlers. Case Study CS.7 builds
on this chapter’s content to show how to use a debugger to find bugs in a program or, more
generally, to analyze the execution of the program.
Chapter 8 covers the development of new classes in Python and the object-oriented pro-
gramming (OOP) paradigm. The chapter builds on Chapter 7’s uncovering of how Python
classes are implemented through namespaces to explain how new classes are developed. The
chapter introduces the OOP concepts of operator overloading—central to Python’s design
philosophy—and inheritance—a powerful OOP property that will be used in Chapters 9 and
11. Through abstraction and encapsulation, classes achieve the desirable software engineer-
ing goals of modularity and code reuse. The context of abstraction and encapsulation is then
used to motivate user-defined exception classes. Case Study CS.8 goes one step further and
illustrates the implementation of iterative behavior in user-defined container classes.
Preface xxiii

Chapter 9 introduces graphical user interfaces (GUIs) and showcases the power of the
OOP approach for developing GUIs. It uses the Tk widget toolkit, which is part of the
Python Standard Library. The coverage of interactive widgets provides the opportunity to
discuss the event-driven programming paradigm. In addition to introducing GUI develop-
ment, the chapter also showcases the power of OOP to achieve modular and reusable pro-
grams. Case Study CS.9 illustrates this in the context of implementing a basic calculator
GUI.
The broad goal of Chapters 7 though 9 is to introduce students to the issues of program
complexity and code organization. They describe how namespaces are used to achieve func-
tional abstraction and data abstraction and, ultimately, encapsulated, modular, and reusable
code. Chapter 8 provides a comprehensive discussion of user-defined classes and OOP. The
full benefit of OOP, however, is best seen in context, which is what Chapter 9 is about.
Additional contexts and examples of OOP are shown in later chapters and specifically in
Sections 11.2, 12.3, and 12.4 as well as in Case Study CS.10. Chapters 7 though 9 provide
a foundation for the students’ future education in data structures and software engineering
methodologies.

Crawling through Foundations and Applications


Chapters 10 through 12, the last three chapters of the textbook, cover a variety of advanced
topics, from fundamental computer science concepts like recursion, regular expressions,
data compression, and depth-first search, to practical and contemporary tools like HTML
parsers, JSON, SQL, and multicore programming. The theme used to motivate and connect
these topics is the development of web crawlers, search engines, and data mining apps.
The theme, however, is loose, and each individual topic is presented independently to allow
instructors to develop alternate contexts and themes for this material as they see fit.
Chapter 10 introduces foundational computer science topics: recursion, search, and the
run-time analysis of algorithms. The chapter starts with a discussion of how to think recur-
sively. This skill is then put to use on a wide variety of problems from drawing fractals to
virus scanning. This last example is used to illustrate depth-first search. The benefits and
pitfalls of recursion lead to a discussion of algorithm run-time analysis, which is then used
in the context of analyzing the performance of various list search algorithms. This chap-
ter puts the spotlight on the theoretical aspects of computing and forms a basis for future
coursework in data structures and algorithms. Case Study CS.10 considers the Tower of
Hanoi problem and shows how to develop a visual application that illustrates the recursive
solution.
Chapter 11 introduces the World Wide Web as a central computing platform and as a
huge source of data for innovative computer application development. HTML, the language
of the web, is briefly discussed before tools to access resources on the web and parse web
pages are covered. To grab the desired content from web pages and other text content, regular
expressions are introduced. A benefit of touching HTML parsing and regular expressions
in an introductory course is that students will be familiar with their uses in context before
rigorously covering them in a formal languages course. Case Study CS.11 makes use of the
different topics covered in this chapter to show how a basic web crawler can be developed.
Chapter 12 covers databases and the processing of large data sets. The database lan-
guage SQL is briefly described as well as a Python’s database application programming
interface in the context of storing data grabbed from a web page. Given the ubiquity of
databases in today’s computer applications, it is important for students to get an early ex-
posure to them and their use (if for no other reason than to be familiar with them before
their first internship). The coverage of databases and SQL is introductory only and should
xxiv Preface

be considered merely a basis for a later database course. This chapter also considers how
to leverage the multiple cores available on computers to process big data sets more quickly.
Google’s MapReduce problem-solving framework is described and used as a context for
introducing list comprehensions and the functional programming paradigm. This chapter
forms a foundation for further study of databases, programming languages, and data min-
ing. Case Study CS.12 uses this last context to discuss data interchange or how to format
and save data so that it is accessible, easily and efficiently, to any program that needs it.

What Is New in This Edition?


The big change between the first and second editions of the textbook is a structural one.
A clear separation now exists between the foundational material covered in a chapter and
the case study illustrating the concepts covered in the chapter. The case studies have been
moved out of the chapters and are now grouped together in the E-Book Edition of the text-
book. There are two benefits from this structural change. First, the coverage of the textbook
chapters is now more focused on foundational material. The streamlined content, together
with a switch to a Black&White format, allows the new Print Edition of the textbook to
be priced less than the previous one. The second benefit of moving the case studies to the
E-Book Edition is that the move gives more space for the case studies to be enriched. Four
new case studies appear in the new edition, and there is now a case study associated with
every chapter of the textbook (except the “non-technical” introductory chapter).
In addition to this structural change, new material has been added, some material has
been moved, errata have been corrected, and the presentation has been improved. We outline
these changes next.
In Chapter 2, we have added coverage of the tuple type (covered in Chapter 6 in the
first edition). This move is justified because the tuple type is a key built-in type in Python
that is used by many Standard Library modules and Python applications. For example, tuple
objects are used by the image processing modules discussed in the case studies associated
with Chapters 4 and 5. Because the tuple type is very similar to the list type, this additional
content adds very little to the time needed to cover Chapter 2.
In Chapter 3, the presentation of functions has been improved. In particular, there are
more examples and practice problems to help illustrate the passing of different numbers and
types of function parameters. The Chapter 4 case study has been replaced with a new one on
processing image files. The new case study gives students an exciting opportunity to see the
textbook material in the context of visual media. Also, the material on processing and for-
mating date and time strings has been moved to Section 4.2. The important Chapter 5 has, in
the second edition, an associated case study on implementing image processing algorithms.
This material again uses the attractive context of visual media to illustrate fundamental con-
cepts such as nested loops.
Chapter 6 no longer includes coverage of the tuple type (moved to Chapter 2). Chapter 7
has, in the second edition, an associated case study on debugging and the use of a debugger.
It effectively uses the concepts covered in the chapter to provide students with a new tool
that will help them with debugging. Chapters 8 and 9 have changed only slightly. Chapter 10
has a deeper and more explicit coverage of linear recursion and its relationship to iteration.
Chapter 11 has few changes. Finally, Chapter 12 has, in the second edition, an associated
case study on data interchange which will help students gain practical experience working
with data sets.
Finally, about 60 practice and end-of-chapter problems have been added to the book.
Another random document with
no related content on Scribd:
matkamiesten suksen sauvan kipakkata kirinää alkaisi talvitieltä
kuulua.

Huoahtaen sulkee muori luukun ja ottaa taas esille puukantisen


virsikirjansa ja lukee siitä mielensä virkistykseksi. Mikäpä hänellä on
täällä hiljaisen korven keskellä yksinäänkään ollessa. Eikähän
sellaista ole voinut tapahtua, että molemmat miehet sille tielleen
jäävät. Hän on kyllä viime yönä nähnyt kamalan unen. Miehet ovat
olleet paluumatkalla ja molemmat kääriliinoihin kiedottuna. Lauri on
hoippunut isänsä jälessä ja hänen kädestään on jäänyt veriviiru
lumihangelle. Kiesus-Maria miehiä armahtakoon, jos haavoissaan
siellä avutta hoippuvat.

Sauna on turhaan odottanut kylpijöitä. Pirkittakaan ei ole


uskaltanut pimeän tultua mennä saunaan, kun navetassa
käydessään on kuullut läheisestä korvesta suden ulvontaa. Huu, huu,
hu-uh-huu, on kamalasti kaikunut pakkasen sitä säestäessä
räiskähtelyllään ja muori on sulkenut tarkoin navetan ja tuvan ovet
ja asettunut taas joulun edellä valmistamansa talikynttilän ääreen
sanaa tutkimaan.

Puoliyössä kuitenkin kuuluu hiljainen koputus oveen ja muori


arvaa, että miehet sieltä vihdoinkin tulevat.

Avattuaan oven, näkeekin Pirkko siinä Tuomaan ja Laurin tutut


kasvot, vaikkakin valkoisempina kuin lähtiessä. Silloin oli niissä vihan
tuli loimunnut, nyt ne olivat rauhalliset, joskin veri oli niistä tyystin
paennut.

— No vielähän toki tulitte, virkkaa muori ojentaessaan


oluthaarikan väsyneille matkamiehille. — Ja kuinka asianne onnistui?
— Huonosti. Ei tarvitse talonpojan lähteä tappelemaan herroja
vastaan, virkkaa Tuomas. — Emme tosin tiedä, miten Nokialla on
käynyt, mutta luulenpa sielläkin epäsovun ja ryöstöhalun miehiltä
tarmon vieneen.

— Ja Lauri on saanut käsivarteensa haavan, sanoo muori. — Sitä


tiesi uneni. Annahan kun laitan sen, ettei pääse raudan ja pakkasen
vihat tehoamaan.

Muori käärii Laurin haavan loitsujaan hiljaa lukien, ja jouduttaa


sitten miehille ruokaa tuvan honkaiselle pöydälle. Käy saunaakin
tarkastelemassa ja ilmoittaa miehille vielä kylynkin olevan saatavissa.

Antaa vielä jotain voidetta Laurille, käskien sillä käsivarttaan


saunassa sivelemään, huomauttaen:

— Lukisit samalla raudan synnyn, niin se estäisi veren vihoja.

— Pappihan sanoo sellaisia noituudeksi, virkkaa Lauri naurahtaen.

— Sanokoon. Tiedän kuitenkin niiden auttavan, virkkaa muori,


joka palveli rinnan omia taikojaan ja kotihaltijoitaan ja Ristinkiesusta.

Kun miehet palasivat saunasta vähän jo virkeämpinä, laulettiin


virsi Ristuksen syntymästä. Olihan tämä matkamiehille niinkuin joulu,
kun talikynttilä valaisi kotoista pirttiä ja kaskihalmeen ohrainen olut
palautteli hiljalleen menetettyjä voimia.

Kun virsi oli laulettu ja muori lukenut vielä virsikirjastaan viimeksi


rukouksen keskiyön vaaroja vastaan, virkkoi hän kirjansa sulkien:

— Johan kieltelin lähtemästä ja olen aina kieltänyt. Sota ei tuo


muuta kuin sotaa ja vaino uutta vainoa. Voihan sitä muutenkin
päästä veronkantajien ja huovien mielivallasta, kun kärsii aikansa
hiljaisena.

— Niin, eteenpäinhän sitä on yritettävä, vaikka tie näyttääkin


vaikealta, virkkoi siihen Tuomas, asetellen nurkkapenkille hirven
taljaa pehmoiseksi nukkumapaikakseen.

Kohta ei kuulunut tuvassa muuta kuin nukkuvien tasainen hengitys


ja sirkan laulu uunin solasta.

Petetty talonpoikaispäällikkö.

Vuoden 1596 viimeinen päivä oli kallistunut illoilleen. Viikkokausia


kestänyt pakkanen alkoi yhä kiihtyä yöksi ja Tyrkkölän ja Viholan
talojen pelloille sytytteli nuijajoukko nuotioita lämmitelläkseen
taistelun jälkeen ja kootakseen lyhyen yölevon aikana voimia
huomispäivän uuteen taisteluun.

Nuijamiesten ja marskin joukkojen välinen taistelu oli kestänyt


koko päivän ja vasta illan hämärtyessä oli marski joukkoineen
vetäytynyt kapean Pyhäjärven selän yli Nokian puolelle, josta
leiritulet nyt pilkoittivat pakkashuurujen lomitse. Pohjalaiset olivat
lähteneet tälle kohtalokkaalle retkelle kotiseuduiltaan kolmena
joukkona, jotka nostattivat Savon, Hämeen ja rantapitäjien asukkaat
aseisiin marskia vastaan. Ilmajoen kirkolla oli näille joukoille valittu
yhteiseksi ylimmäksi päälliköksi Jaakko Ilkka, joka oli jo ennemmin
puuhannut talonpoikien vapauden puolesta ja niistä puuhistaan
joutunut Turun linnan syvimpään vankityrmään, mutta sieltä
neuvokkuudellaan pelastunut.
Pakkanen räiskähteli ja lisää nuotioita rakennettiin. Korjaamatta
olivat vielä taistelukentän laidassa tämän päivän taistelun kaatuneet,
joita oli siellä sekaisin marskin niinkuin nuija-armeijankin miehiä.
Järven toisellakin rannalta alkoi yhä useampi nuotiotuli tuikkaa ja
Ilkka katseli näitä tulia miettien, miten mahdollisesti seuraavan
päivän taistelussa tulisi käymään. Vastakkain oli tässä herravalta ja
talonpoikaisvalta ja jos jälkimmäisten joukossa olisi ollut tarpeeksi
yksimielisyyttä, ei olisi ollut Ilkalla vähäistäkään epäilyä
talonpoikaisväen voitosta.

Nyt oli kuitenkin niin, että heti retken alusta oli ollut riitaa siitä,
kuka saisi tahtonsa kuuluville ja kun hän valittuna johtajana oli
ajanut jyrkästi tahtonsa läpitse, alettiin häntä vihata ja kadehtia. Hän
kyllä olisi suonut päällikkyyden yhtä hyvin jollekulle toisellekin, jos
vain olisi löytynyt mies, joka tätä monimielistä joukkoa olisi pystynyt
hallitsemaan ja johtamaan. Sitä ei suurista eleistä ja sanoista
huolimatta näyttänyt löytyvän, ja hän kun oli ottanut retken
vastuulleen, tahtoi myöskin lujasti pitää johdon käsissään.

Niinpä oli hän saanut pitkin nuijajoukon matkaa hillitä joukkojensa


ryöstelyn halua ja juopottelua. Aatelisten kartanoissa käytiin kostoon
empimättä ja kaikenlaista ryöstötavaraa karttui, joka oli esteenä
sotatoimille ja ripeälle etenemiselle. Oluttynnyrien tapit lyötiin auki ja
kuohuvien haarikoiden ääressä unohtui retken todellinen merkitys,
raa'at vaistot pääsivät valloilleen. Vielä eilen olivat muutamat
tunkeutuneet Nokian kartanon kellariin, kuljettaen sieltä
oluttynnyreitä ja jos aiottu juominki olisi saanut jatkua, ei
nuijajoukko olisi pysynyt tämänpäivän taistelussa horjumatta
asemissaan, niinkuin se nyt oli tehnyt. Ilkka oli katkaissut
juominkiyritykset ja tästäkin saanut taas lisää entisiin vihoihin. Olipa
hän jo saanut kuulla useilta tahoilta uhkauksiakin ja nytkin vihollisen
leiritulia silmäillessään mietti Ilkka, voisiko hän pitää järjestystä yllä
loppuun asti ja hillitä niitä voimia, joita hän itse oli herättänyt. Hänen
tarkoituksensa ei ollut, että herrat olisivat surmattavat tahi
karkotettavat ja kartanot poltettavat ja »ryöstettävät, mutta
veronkantajien kourissa kiusaantuneet rahvaan miehet eivät
pystyneet käsittämään, että retken tarkoitus ei ollut kostaa, vaan
lopettaa rasittava linnaleiritys ja ylenmääräinen verojen kanto ja
siirtää vallan ohjat Flemingiltä jollenkin toiselle, kansan oloja ja
elämää paremmin käsittävälle miehelle.

Ilkan suunnitelmat tässä suhteessa olivatkin kiintyneet Erik-


kuninkaan poikaan, Kustaaseen, joka maanpakolaisena oli
kuljeksinut vierailla mailla, mutta jonka nyt huhuiltiin piilottelevan
jossain äitinsä, Kaarina-kuningattaren lähettyvillä Liuksialassa.

Niinpä oli hän joulun edellä poikennut Liuksialaan, jossa


leskikuningatar otti hänet pelkäämättä ja ystävällisesti vastaan.
Kävellessään leirinsä vahtipaikkoja tarkastellen kertasi Ilkka vielä
mielessään tämän kohtauksen.

Kaarina-kuningatar seisoo Liuksialan vierassalissa jäntevänä,


joskin hieman kalpeana ja kysyy likalta:

— Mitä tahdotte minulta?

— Tahdon vain ilmoittaa, että monikymmen tuhantinen


nuijajoukko ei kädelläänkään koske omasuuteenne, eikä häiritse
rauhaanne ja sitten haluan kysyä, tiedättekö poikanne, Kustaan
olinpaikan?

Kaarinan kasvot käyvät entistä kalpeammiksi ja hiljaa hän vastaa:


— En, sitä en todellakaan tiedä. Ja mitä tahtoisitte pojastani?

— Tekisimme hänestä Suomen kuninkaan, lausuu Ilkka


kalskahtavasti, lisäten:

— Kansa rakastaa teitä ja poikaanne ja luottaisi hänen


oikeamielisyyteensä.

Leskikuningattaren kasvoille vierähtää kyynel. Väsyneenä hän


istahtaa ja pyytää nuijapäällikköäkin istumaan.

— Oh, onneton poikani Kustaa… sitä hän kyllä olisi, mutta eihän
hän voi… kateelliset eivät sallisi hänen kauan pysyvän vallassa…

Niin, sepä se oli, kateus, joka nytkin näytti peloittavana hajottavan


kansan voimat. Alakuloisena oli nuijapäällikkö poistunut Liuksialasta
ja saanut töin tuskin estetyksi ryöstelijät sinne menemästä, samoin
kuin Tottien ja Hornien kartanoihin.

*****

Tarkastaessaan nuijajoukon leirin vahtipaikat, vetäytyy Ilkka


omalle nuotiolleen lepäämään. Äsken oli hän saanut taas keskeyttää
muutamilla nuotioilla reuhaavien miesten juomingit ja kuullut yhä
tuimempia uhkauksia. Nokian kartanosta oli taas kuljetettu
oluttynnyreitä ja ylimielisinä päivän taistelussa saavutetun voiton
johdosta aikoivat miehet kostutella yön kuluessa kaulojaan
kuohuvalla nesteellä. Rähisten pantiin olutnassakat syrjään ja Ilkka
oli käskenyt renkinsä pitämään silmällä, jos ne otettaisiin jälleen
esille, ja tuomaan siitä sanan hänelle.

Kunnolleen ei Ilkka ollut ehtinyt ummistaa silmiään, kun renki tuli


kertomaan:
— Muutamat Jalasjärven miehet jatkavat juopottelua ja Tyrkkölän
taloon on kokoontunut miehiä samassa tarkoituksessa.

Iikka nousee nopeasti ja hänen silmissään leimahtaa vihan liekki.


Näinkö he valmistautuvat huomispäivän ratkaisevaan taisteluun?
Muutamalla harppauksella on hän rähisevien miesten nuotiolla ja
potkaisee pohjan rikki oluttynnyristä, josta kuohuva neste roiskahtaa
hangelle. Muuan mies hypähtää nuotion äärestä kiroten Ilkan
rintamuksin:

— Mikä sinä luulet olevasi, joka tässä näin komennat?

— Sen sinä tiedät kysymättäkin, että olen teidän päällikkönne,


joksi olette minut valinneet ja sellaisena vastuussa retkemme
onnistumisesta. Vai luuletteko, että humalaisina olisitte kestäneet
marskin tottuneiden joukkojen hyökkäystä, joka huomispäivänä
uudistuu varmasti tuimempana.

— Päällikkö… hymähti toinen ilkeästi. — Kyllä tässä aina sellaisia


päälliköitä löytyy.

Ilkka eteni toisille nuotioille, jossa uusiutui sama temppu ilman


suurempata sanan vaihtoa. Vihaisista silmäyksistä ja murinasta
kumminkin voi huomata, että nuijapäällikön ankara juopottelun esto
ei tehnyt hyvää vaikutusta.

Palattuaan nuotiolle, kallistui likka havuvuoteelleen ja katseli


kylmässä korkeudessa väräjäviä tähtiä. Nokian kosken pauhu kuului
pakkasyössä omituisen moniääniseltä ja sen soinnuissa oli jotain,
joka teki Ilkan rauhattomaksi. Miten käy huomisen taistelun, kun
joukkojen kuri on noin yhä höltymässä? Jos se epäonnistuu on kaikki
menetetty, ja marskin sorto jatkuu entistä julmempana ja
talonpoikien toivottu vapaus on pitkiksi ajoiksi menetetty. Nyt oli
uuden vuoden yö. Minkälaisena koittaisi tämä uusi vuosi maalle ja
sen vaikeissa oloissa elävälle kansalle, minkälaisena nuotioittensa
ääressä lepäävälle talonpoikaisarmeijalle?

Ilkan mietteet katkaisee lähestyvien askelten narahtelu


pakkaslumessa. Ilkan renki ja muuan toinen mies tulee kiireisin
askelin ja edellinen sanoo isännälleen:

— Isäntä, isäntä, lähtekää pian pakoon, teitä tullaan kohta


vangitsemaan.

— Mitä sinä horiset? t

— Totta se on, vakuutti toinen vieras, Tuiran Vilppu, Ilkan ystävä,


joka oli saanut olla todistajana, kun talonpojat tekivät kauppaa
marskin lähettien kanssa omasta päälliköstään. Fleming oli
lähettänyt voutinsa Melkiorinpojan ja Laukon herran talonpoikien
leiriin, josta joku oli saattanut sanan ensin Flemingille asiain tilasta.
Ilkan kadehtijat panivat asian alulle Tyrkkölän talossa reuhatessaan
ja marski oli luvannut lähettiensä kautta talonpojille täydellisen
anteeksiannon kapinasta ja viideksi vuodeksi vapautuksen
linnaleiristä, jos nämä jättäisivät hänelle päällikkönsä vangittuna.
Ensin oli hieman aprikoitu, mutta pian oli kateus painanut alleen
viimeisetkin kunniantunnon rippeet miesten mielissä ja katalaan
hankkeeseen suostuttiin.

— Niin, kyllä nahkasi on myyty, vahvisti vielä Vilppu ja jatkoi; —


Sanoinhan jo kerran sinulle, että kiittämättömyydellä ja
halpamaisuudella se joukko palkitsee auttajansa vaivat.

— Onko tämä totta? kirahti Ilkka hampaittensa lomasta.


— On, on ja nouskaa pian satulaan ja paetkaa, kiirehti renki. —
Me tulemme Vilpun kanssa reellä ajaen jälestä.

— Mutta miksi ei vangittu pettureita ja myöskin marskin lähettejä?


kuohahti Ilkka.

— Siinäpä se. Silloin ei olisi tullutkaan päällikön nahka myydyksi,


virkkoi Vilppu.

— Minä satuloitsen hevosen, hätäili renki.

— Tee se, Jaakko Ilkan nahkaa he eivät myy!

Ilkka otti reestä miekkansa, sitoi sen kupeelleen ja hypähti


satulaan.

Ylitse vuotava viha leimahti Ilkan tuuheiden kulmien alta, kun hän
ojensi nyrkkinsä leiriä kohti ja sähähti.

— Ryömikää nyt sortajanne jaloissa, katalat, ja tuntekaa luissanne


tuhatta tuimempana huovien ruoskan iskut. Vielä kerran kuitenkin
purkaisitte kaupan, jonka tänä yönä teitte, mutta silloin en ole enää
teille apuani antamassa.

Ilkka nykäisi ohjista ja ratsu porhalsi täyteen juoksuun ja hävisi


pakkashuuruun. Leirin ohi ajaessaan huomasivat jälessä tulevat
miehet että nuotiot tuikkivat yksinäisinä ja sammumaisillaan, kun
miehet olivat lähteneet niiden äärestä.

*****

Kului loppu yö ja koitti uuden vuoden päivä. Kun vangittavaa


nuijapäällikköä ei kuulunut, ärtyi marski ja vangitutti kaupan
hierojat, käskien huoviensa kohtelemaan heitä niinkuin halusivat. Ne
nuijamiehistä, jotka olivat yöllisestä humalastaan selvinneet,
riensivät suin päin pakoon. Ei ollut mitään toiveita linnaleirin
vapautuksesta, sen olivat marskin voudit ilmoittaneet ja talonpojat jo
rähisivät keskenään, kuka oli Ilkan vangitsemiseen suostunut ja näin
oman asiansa ajaneet karille. Se oli kuitenkin nyt menetetty, samoin
kuin paljon kuviteltu vapauskin. Aikaa ei ollut liioin kinasteluun, kun
jokainen tahtoi päästä mahdollisimman pian pakoon. Syntyi teillä ja
metsissä sekasortoinen tungos ja Flemingin huovit olivat pian tämän
pakenevan joukon kintereillä, lyöden ja surmaten.

Osa pohjanmaan miehistä välttyi teurastukselta, mutta jokainen


tiesi, että kosto oli tuleva heille siitä häpeällisestä kaupasta, jolla he
olivat päällikkönsä myyneet.

Nuijan jälkiä.

Kaarle-herttuan tykit olivat jyskähdelleet ja ammukset rapistelleet


ankarasti Turun linnan muureja, joiden sisällä koetti
puolustautumisesta huolehtia Ebba-rouva vanhan linnanpäällikön
kanssa. Tälläkertaa tuntui kuitenkin Turun järeän linnan valloitus
ikäänkuin leikiltä siihen nähden, mitä linnan harmajat muurit olivat
saaneet kokea. Puolustusväki vähenikin rippeiksi, kun aniharvat
tahtoivat taistella herttuata vastaan ja niinpä täytyi eräänä päivänä
Ebba-rouvan, marskin lesken, sanoa vanhalle linnanpäällikölle:

— Huomaako Degen, että kohta saamme taistella yksinämme.


Holtiton väki karkaa Kaarlen puolelle.
Voutivanhus hykerteli käsiään neuvottomana.

— Minkä minä sille mahdan, armollinen rouva. Kaipa sitten meidän


täytynee antautua…

— Ja tekin kehtaatte siitä puhua! kuohahti Ebba-rouva käyden


punaiseksi kasvoiltaan.

— Niin, niin. Välttämättömyydelle ei voi mitään. Jos autuaasti


nukkunut marski olisi…

— Sepä se! Jos hän eläisi, ei Turun linna koskaan antautuisi


herttualle.

*****

Turun linnan täytyi kuitenkin jo samana päivänä avata porttinsa


herttualle ja seuraavana päivänä jo saneli herttua kirjureilleen
julistuksia Suomen kansalle ja löi tahtia piiskan varrella
saapasvarsiinsa, kävellen kiivaasti permannolla, jonka keskellä
pöydän ääressä sihteerit ahersivat. Herttua oli juuri palannut
kaupungista, jossa hän oli lukenut lakia Turun porvareille, jotka viime
päivien tapahtumia olivat seuranneet vain syrjästä liittymättä
suoraan ja selvästi herttuan joukkoihin.

Äsken olivat kirjurit kinastelleet huoneessaan ja kertoilleet


hiljakkoin Viipurista tulleelle kamarijunkkari Hieronymus Birkholzille
herttuan tulosta linnaan, ja niin reheväksi oli juttelu käynyt, ettei
yksikään kuullut herttuan kiivaita läheneviä askeleita ennenkun
herttua tempasi oven auki ja seisoi kynnyksellä tuimasti ympärilleen
silmäillen.
Kirjurit ponnahtivat seisoalleen ja kumarsivat syvään, joka temppu
Birkholzilta kävi hieman kankeasti luuvaloisen selkänsä vuoksi.

Saatuaan kirjeen Viipurista ja silmäiltyään sen läpi, heitti herttua


sen pöydälle virkkaen:

— Sitä ijänikuista soutamista ja huopaamista! Meidän on


kirjoitettava
Suomen kansalle julistus.

Ja niin se oli alkanut. Herttua saneli julistuksen sisältöä, teroittaen


kaikessa luottamaan häneen ja tekemään tyhjäksi Arvid Stålarmin ja
hänen toveriensa mahdolliset hankkeet. Koskapa hän, herttua, oli
pitävä huolta siitä, että tästä lähtien saisivat talonpojat, joita tähän
asti oli sorrettu, oikeutta ja lainsuojaa.

Kun julistus oli saneltu loppuun, merkitsi sihteeri sen alle: Annettu
Suomen Turussa 3 pnä Lokakuuta Anno Domini 1597.

Herttua tarttui jo kynään, aikoen kirjoittaa nimensä alle, mutta


huomattuaan julistuksen ruotsinkieliseksi laski kynän takaisin
pöydälle.

— Kääntäkää tämä suomeksi. Tahdon panna nimeni


suomenkielisen julistuksen alle, sillä se on oikeus ja kohtuus Suomen
kansalle, joka näinä vuosina on näyttänyt siinä määrin itsensä, että
voi vaatia julistukset omalla kielellään. Paha, etten itse osaa vielä
suomea, niinkuin veljeni Juhana.

Nyt oli Birkholzin vuoro suomenkielen taitoisena tarttua kynään ja


vahingoniloisesti silmäsi hän toisiin kirjureihin, joilta tämä näihin asti
halveksittu taito puuttui. Olipa hyvä, että hän herttuan
kamarijunkkarina taisi virheettömästi puheessa ja kirjoituksessa
maan kielen.

Kun julistus oli käännetty, piirsi herttua sen alle suurin kirjaimin
Carolus. Nimikirjoitus vahvistettiin vielä herttuallisella sinetillä ja siitä
toimitettiin riittävä määrä jäljennöksiä maan kaikissa kirkoissa julki
luettavaksi.

Kun herttua oli poistunut huoneesta, ihmetteli joku sihteereistä,


että herttua tahtoi julistukset maan omalla kielellä. Siihen arveli
partaansa punova Birkholz:

— Eiköpä liene suomalaisen talonpojan nuijan jälkiä. Se hyöty siitä


ainakin oli, että ensikertaa saa nyt Suomen kansa hallitsijansa
julistuksen omalla kielellään.

Aapelusta oppimassa.

Erämaaseurakunnan kirkkoherra istui huoneessaan ja koetti


jankata äsken saapunutta piispa Agricolan kirjettä ritisevän
talikynttilän ääressä. Ulkona paukahteli keskitalven pakkanen, mutta
sisällä oli lämmin ja kirkkoherran otsalle kohosi hikihelmi, niin
innostunut hän oli luettavaansa.

Kirjeen mukana oli tullut piispalta toinenkin lähetys, joka oli


sisältänyt hänen äsken ilmestyneen aapiskirjansa. Kirjeessä kehoitti
piispa kirkkoherraa ahkerasti käyttämään tätä kansan opetukseen ja
ilmoittamaan, mihin tuloksiin tässä työssään pääsisi.

*****
Muutamia kuukausia myöhemmin istui papin tuvassa muutamia
lähellä asuvia talonpoikia hartaasti tankkaamassa aapiskirjan
koukeroisia kirjaimia, jotka eivät tahtoneet mitenkään mahtua enää
ikämiesten harmaantuviin päihin. Kesken opetuksensa virkkoi
kirkkoherra naapurinsa miehille:

— Visasta tuntuu olevan kallot miehillä. Miksi ette ole ottanut


yhtään nuorempata miestä mukaanne?

— Johan tässä nyt vielä nuorempia… kunpahan vanhemmatkin


ensin oppisivat, virkkoi Kanoinen, kirkon kuudennusmies, jonka
täytyi jo senkin vuoksi koettaa oppia aapelusta, kun oli kirkon
omaisuuden huoltaja ja etumies.

— Kyllä nuorempienkin täytyy oppia kirjan taitaviksi, sanoi


kirkkoherra ja ojensi lukupuikon vaimolleen Marketalle, jonka oli
saanut melkoisen vähällä vaivalla lukutaitoiseksi, ja jonka täytyi
vuorostaan opettaa muita ja auttaa kirkkoherraa opetustoimessa.

Pöydällä paloi kaksi talikynttilää, että miehet paremmin näkisivät.


Hymyillen hieman vallattoman veikeästi otti nuori papin vaimo
aapeluksen ja miehet asettuivat molemmille puolin seuraamaan
lukupuikon verkkaista liikuntaa.

— Aa.

— Aaa, aa, kuului partaisista suista.

— Mikäs tämä oli? kysyi Marketta osoittaen B:tä.

— Eiköhän se ollut setta, arvelee lipoinen, vankka erämies ja


korvenkävijä.
Marketan iloinen nauru helähti.

— B tämä oli ja tämä C.

— See… setta.

— Miksi Kanoinen sanoo niin että setta? pistää kirkkoherra väliin.

Pöydän toisessa päässä oleva tuntilasi oli valuttanut hiekkansa


alimmaiseen suppiloon ja tunti oli siis kulunut, mutta kirjaimistoa ei
ollut vielä päästy loppuun.

Marketta oli väsymätön opettaja, mutta nyt hänen täytyi lähteä


pistäytymään läävässä suorimassa heiniä lehmilleen ja kirkkoherra
istui vuorostaan jatkamaan.

Tuntuipa entinen harmaaveljeskunnan munkki ja myöhemmin


Turun triviaalikoulun rehtori puristavan lukupuikkoa hieman
tiukemmalla otteella kuin tavallisesti ja äänessäkin vivahti pieni
kärsimättömyyden piirre. Vasta alussa oli lukutaidon opetus ja milloin
olisikaan monituhantinen erämaapitäjän väki saatettu siitä
osalliseksi. Piispa Agricola oli jo tiedustellut, miten lukutaito edistyy
ja tuossa jankkaa aikuiset miehet aakkosia jo toista iltapuhdetta,
saamatta niitä sittenkään päähänsä.

— Eiköhän vähän huoattaisi välillä, pyytää vanha Ilpoinen ja


pyyhkii hikeä otsaltaan. — On tämä lujempaa työtä kuin kantojen
vääntäminen.

Vielä mitä, kun vaan pitää opetuksen mielessään, sanoo


kirkkoherra kärsimättömästi.
— Kyllä taidan minäkin laittaa nuorempia edestäni, arvelee
Kanoinenkin puhkaen palavissaan.

— Vai jo alkaa kyllästellä Kanoinenkin. Eihän tämä vielä mitään,


mutta kun pitäisi kirjoittamaankin oppia, sanoo kirkkoherra, sulaen
taas kasvoiltaan hieman lempeämmäksi.

Kirjoitustaitoa ei tosin voitu vielä aikoihinkaan ajatella kansalle


opetettavaksi. Voisihan lukutaidon oppimisessakin mennä
vuosikymmeniä ja miehet saisivat edelleen nimensä kirjoittamisen
sijasta piirrellä puumerkkejään niinä harvoina kertoina kuin sitä
tarvittiin.

— Ei tule palonkyntäjästä kynämiestä kuuna päivänä, virkkoi


Kanoinen. —
Luulenpa, etteivät poikamme pojatkaan vielä sitä taitoa opi.

Kirkkoherra oli unohtunut miettimään niitä vaikeuksia, joita oli


lukutaidottoman kansan valistamisessa taikauskoisista tavoistaan
palvelemaan yhtä ainoata ja oikeata Jumalaa. Kun saisi edes
muutamiakaan kansan miehiä oppimaan, niin saisipa heistä taas
apua tässä vaivaloisessa työssä. Nämäkin ukon jäärät tässä vain
alkoivat kyllästellä jo aivan alussa, jota vastoin vanha pitäjän
edelläveisaaja oli kärsivällisesti jankannut aapiskirjan päähänsä ja
opetti nyt jo vuorostaan muita kotonaan.

— Aloitetaanpa taas, sanoi kirkkoherra ja alkoi yhdistellä kirjaimia


sanoiksi. Se oli kovin ihmeellistä miehistä. »Isä meithen, joca olet
taivahissa», tavailtiin kirkkoherran mukana ja kun Herran rukous oli
päästy onnellisesti loppuun, sanoi sielunpaimen hikipäisille
oppilailleen:
— Sunnuntaiksi on tämä jo opittava ulkoa. Se on toista, kuin
teidän loitsunne, jotka eivät auta mitään.

Kirkkoherra nousi mennäkseen kyhäämään kirjettä piispalle ja


läävästä palaava Marketta sai taas käydä vuorostaan jatkamaan
opetusta miehille, jotka olisivat jo mielellään lähteneet suksilleen,
koskapa jo Otava ulkona myöhäistä iltaa näytti. Kirkkoherra kuitenkin
määräsi, että kirjaimet oli vielä useampaan kertaan jankattava ja
ainakin puolet opittava muistamaan ulkoa, ennen kuin miehet
saisivat kotiin lähteä. Hymyilevän Marketan lukupuikko alkoi jälleen
liikkua verkalleen aapeluksen lehdellä, ja nöyränä taipuivat vanhat
päät seuraamaan sen liikkeitä.

Rauhan vieras.

Nuijasodan melskeet olivat vähitellen vaimenneet ja


Pohjanmaallekin vierinyt viesti Klaus Flemingin kuolemasta. Häviöstä
turtunut ja päällikkönsä myynyt Pohjanmaan väki ei kuitenkaan
osannut iloita niinkuin olisi pitänyt näistä sanomista. Ilkan kohtalon
muisto painoi mieliä ja vasta kun kerkeä kesä oli tullut ja päästiin
vähitellen arkisiin askareihin käsiksi, alettiin odottaa Kaarle-herttuaa
Suomeen.

Hän kyllä saapuikin, ja oli valmis jäntevin kourin järjestämään


maan asioita. Useampia retkiä hän teki Suomeen, ja v. 1602 hän
palasi täältä Ruotsiin matkustaen Pohjanlahden ympäri. Siltä retkeltä
kerrotaan seuraava kohtaus.
— Eräänä kirkkaana helmikuun päivänä oli Kalajoen kirkolla
vilkasta väen liikettä. Laajan pitäjän eri kulmilta oli kokoontunut
väestöä suorittamaan verojaan ja pitämään markkinoita.

Kirkkoherra Ljungo hääräsi vilja-aittansa luona ottaen vastaan


saataviaan ja kysellen eri seutujen miehiltä kuulumisia. Kohta alkoi
kuulua aisakellojen helke ja viljaa mittailevat talopojat keskeyttivät
työnsä sitä kuunnellakseen, kun oli varmasti joku ylhäisempi matkue
kulkemassa.

Kohta porhalsikin papin talon pihaan nelirekinen matkue ja


ensimmäisestä reestä ponnahti kookas mies, joka korkeasta otsasta
tuimista viikseistä ja salamoivista katseista tunnettiin heti herttua
Kaarleksi, Ruotsin ja Suomen itsevaltiaaksi hallitsijaksi, vaikka
kuninkaan nimi häneltä vielä puuttuikin. Tulija heitti ympärilleen
tutkivia katseita ja kirkkoherrakin oli niin hämmentynyt, että tunsi
polvensa tutisevan. Herttua nyökäytti ystävällisesti päätään miehille
tervehdykseksi ja ojensi kätensä kirkkoherralle.

— Hyvää päivää, kirkkoherra. Olette niin usein saanut käydä meillä


Tukholmassa, että minä nyt vuorostani pistäysin teidänkin
vieraaksenne.

Talonpojat olivat kokoontuneet herttuan ympärille, ottaen


naapukat päästään, ja katsellessaan heidän innosta palavia
poskiaan, tunsi Kaarle-herttua jotain lämmintä läikähtävän
povessaan ja tervehti kädestä pitäen jokaista.

Kirkkoherra sopersi sekavin sanoin korkean vieraansa


tervetulleeksi ja
Kaarle taputti häntä ystävällisesti olalle.
— Tulkaahan nyt tervehtimään perhettänikin ja opastakaa meidät
sisään takan ääreen.

Tuvan portailla seisoi prinssi Kustaa Aadolf, Ruotsin vallan tuleva


perillinen, joka parin vuosikymmenen kuluttua oli hämmästyttävä
maailmaa ruotsalais-suomalaisella sotajoukollaan. Pakkanen oli
loihtinut tämän kahdeksanvuotiaan pojan, joka ikäisekseen oli
harvinaisen kookas, poskille voimakkaan punan ja herttaisesti
tervehti hän vanhaa kirkkoherraa. Seuraavan reen vällyistä oli
selvinnyt herttuatar molempien prinsessojen, Katarinan ja Marian
kanssa ja ystävällisesti hymyillen ojensi tämäkin kätensä
kirkkoherralle, joka kumarrellen lähti saattamaan vieraita sisään
peläten vaimonsa, Marketan, hämmästyvän toimettomaksi.

Marketta, tuntien tulijat herttuan perheeksi, läimäyttikin kätensä


hämmästyksestä yhteen samalla hiljaa siunaten. Tästä tulivat vieraat
vain entistään iloisemmalle tuulelle ja papin tarmokas emäntä oli
kohta saattanut herttuattaan lapsineen loimottavan takan ääreen ja
samalla kiirehtinyt ottamaan päälleen parhaimman pyhäisen
pukunsa.

Kaarle tahtoi puhutella seudun talonpoikia sillä aikaa kun


Marketta-emäntä laittoi päivällistä vieraille ja keskusteli herttuattaren
kanssa kankaiden kutomisesta ja muista talousasioista.

Tieto herttuan tulosta pappilaan oli levinnyt kulovalkean tavoin


lähiseudulle ja pian oli piha mustanaan väkeä, joka tahtoi nähdä
heille niin ystävällistä herttuata ja tulevata kuningastaan. Arkitupa,
jossa herttua istui pöydän päässä, työntyi väkeä täyteen ja siinä istui
nyt itse isoisäntä, herttua Kaarle, vanhan Kyösti-kuninkaan pojista
nuorin, mies, joka oli perinyt isältään jalot hallitsijalahjat. Herttua
tervehti miehistä useampia, samalla tiedustellen heidän
vuodentuloistaan, antaen isällisiä neuvoja maatalousasioissakin.

Hetken kuluttua virkkoi hän kirkkoherraan kääntyen:

— Muistelen teidän kertoneen saaneenne valmiiksi maan lain


suomennoksen. Onko se teillä nyt täällä nähtävänä?

Mielihyvin nouti kirkkoherra käsikirjoituksen laskien sen herttuan


käteen.

— Tässä on maan laki kokonaisuudessaan kansamme kielelle


käännettynä ja suurin iloni on nyt saada laskea se teidän
ruhtinaallisen armonne käteen. Hartain haluni olisi saada se
pränttiin, mutta varoja siihen minulla ei ole.

— Minä toteutan toivomuksenne, sanoi herttua ja kansaan


kääntyen jatkoi:

— Nyt kun teidän kirkkoherranne on tämän maan lain


suomentanut ja kun tämä laki luetaan, samoin kuin kaikissa teidän
asioissanne otetaan maan kieli käytäntöön, ei teidän tarvitse peljätä
vääryyttä harjoitettavan kohtaanne. Tästä hyvästä saatte kiittää
kirkkoherraanne.

— Kyllä hän on meidän etujamme aina katsonut, kuului


väkijoukosta ja koko kohtaus sai näin ollen juhlallisen luonteen.

Herttua ojensi kätensä kirkkoherralle, jonka silmät olivat kostuneet


ja hyvästelyssään virkkoi hän vielä:

— Kiitän kirkkoherraanne ja teitä kaikkia siitä luottamuksesta, mitä


olette minulle vaikeina aikoinanne osoittaneet ja toivon, että tästä
lähtien kykenen turvaamaan teille ja koko maalle rauhan, jota olette
kauan kaivanneet. Uusi aika alkaa nyt teillekin talonpojille.

Avopäisinä saattelivat miehet vielä pihamaalle rakastamaansa


herttuaa, joka perheineen sijoittui rekiin, lähteäkseen Pohjanlahden
ympäri kotiinsa Tukholmaan.

Kun reet olivat vierineet pihasta, virkkoi kirkkoherra Ljungo


miehille:

— Se oli rauhan vieras.

— Niin oli, ja täysin sellainen, joksi olemme hänet kuvitelleet.


Emme me häneltä ele turhaan apua odottaneet.

Reippain mielin jatkoivat Pohjanmaan miehet saataviensa maksua


ja taisipa useampi jyväkarpio tulla kukkuraisena papin laariin. Olihan
hänkin heidän auttajansa ja suosittu sielunpaimenensa, joka
hengellisten toimiensa ohella piti huolta myöskin maallisten asiain
hoidosta.

Kuninkaan koulu.

Vihainen tammikuun viima puhalteli Turun ahtailla kujilla ja


keskipäivällä myymäkojujaan auki pitävät rihkamaporvarit
puhaltelivat kynsiinsä naputellen lämpimikseen jalkojaan. Aamulla oli
pakkanen ollut vielä kireämpi ja jalkojaan tömisytellen ja äänekästä
melua pitäen olivat kouluteinit saapastelleet Anninkaisten mäen
syrjässä olevaan taloon, jossa näihin asti oli Turun triviaalikoulu
sijainnut, mutta josta sen nyt oli täytynyt muuttaa toiseen taloon,
sillä entisessä aloitti uusi gymnaasio kuninkaan määräyksestä
toimintansa.

Osa entisen triviaalikoulun oppilaita oli muuttanut tähän uuteen


kouluun, johon opettajia oli haalittu yhtäältä ja toisaalta. Rehtoriksi
oli saatu Upsalasta muuan jumaluusoppinut Jacobus Georgii
Raichaeus. Lehtoreitakin tarvittiin useita, kun tässä koulussa tuli
jokaisen opettajan opettaa omaa ainettaan. Niinpä rehtorin
opettaessa jumaluusopillisia aineita Thomas Andræ oli latinan ja
kreikan kielen lehtorina ja Turun entisten koulujen opettajat olivat
vuoron perään lupautuneet muiden aineiden opetuksesta pitämään
huolta.

Nämä molemmat varsinaiset koulun opettajat ankarina sääntöjen


miehinä joutuivat heti kohtalaisen suurta vapautta nauttineitten
teinivekkulien kanssa vastahankaan. Niinpä tänäkin tammikuun
aamuna, kun resuiset, vilusta hytisevät teinit törmäsivät avaraan ja
kylmään luokkahuoneeseen ja lämpimikseen aloittivat seiniä
tärisyttävän painin, syntyi siitä kahnaus, joka päättyi luokkahuoneen
seinällä olevan patukkakaapin tarkasteluun. Arvoisa rector
magnificus alkoi vallattomia naputella koivunvitsoista punotulla
»klopalla» selänpäähän. Asianomainen sääntö vaati, että oppilaitten
oli puhuteltava opettajiaan latinan kielellä, mutta kun tämä taito
varsinkin nuoremmilla teineillä oli puutteellinen, syntyi aloitettavasta
kurinpitotoimenpiteestä vielä suurempi sekasotku kielen
sekaannuksen takia, kun muutamat teinit tulivat nimittäneeksi
äkäistä Jaakoppi Roihausta, joksi teinit rehtori Raichaeusta
nimittivät, vahingossa aasiksi.

Kuninkaan koulun nimessä käskettiin järjestyksessä vanhin


laskeutumaan kurituspenkille. Tämä kurituspenkki oli hätähätää
kuljetettu triviaalikoulusta, jossa sitä useinkin oli käytetty ja jonka
jalat teinit olivat laittaneet siten, että penkki pienellä liikkeellä
romahti maahan. Kymnaasiossa oli vanhimpana oppilaana muuan
Aukusti Nuutinpoika, jota sanottiin Rooman keisariksi, ja joka nyt sai
laskeutua »klopan» käsiteltäväksi. Penkki kuitenkin romahti
maaperään ja teinit ulvoivat kuorossa latinaksi:

— Eläköön Augustus!

Kun Aukusti kääntyili paljain kintuin, tuli siinä arvoisa rehtori


huomanneeksi, että teiniparalla ei ollut paitaa päällä talven
purevasta viimasta huolimatta.

— Eikö Augustuksella ole tarpeellista aluskertaa? kysyi rehtori.

— Mistäpä ne teiniraukan varat paitaan riittäisivät, kun leipäkin on


kerjättävänä, sanoo Aukusti.

Kurinpito jäi sillä kertaa ja rehtori punoi mietteissään partaansa


harkiten, eikö jalo kuningas Kustaa Adolf voisi antaa Turun
kymnaasiolle jotain summaa teiniapuina jaettavaksi.

Vaikka opiskeltiinkin ahkerasti, sattui kuitenkin aina


yhteentörmäyksiä teinien ja ruumiillista kuria harrastavien opettajien
kesken. Koulun patukkakaappi tuli vihatuksi ja eräänä päivänä
löydettiin se Aurajoen jäältä. Asiasta syntyi ankara tutkinto, mutta
selville jäi saamatta, kuka kaapin oli sinne kuljettanut. Kahnaukset
jatkuivat, kunnes Raichaeus oli pakoitettu eroamaan. Riitaisuudet
vähenivät, kun rehtoriksi tuli suomalainen mies, maisteri Henrik
Argillander. Hänen taitavalla johdollaan kehittyi Turun kymnasiosta
todellinen opinahjo ollen maan korkeimpana oppilaitoksena siihen
asti, kun Turkuun perustettiin yliopisto.
Pitäjiä käymässä.

Keskikesän henki veteli viiruja tyvenien vesien pintaan ja leyhytteli


hiljalleen heilimöiviä ruispeltoja pysähtyen talojen pihoihin
irroittelemaan tuoksuja parhaillaan kukkivista pihlajista. Matkoillaan
ehti se pujahtaa vanhaan Turkuunkin, jonka puutalot torkkuivat
hellittävässä auringon paahteessa, ja jonka tuulimyllyt olivat
unohtuneet ristisiivin odottamaan voimakkaampaa tuulen puuskaa.
Keskikesän henki ei viivytellyt kaupungin ahtaissa solissa, vaan riensi
takaisin maaseudulle, jossa aina tapasi järvien rannoilla ja vehmaissa
lehdoissa virkeämpää elämää. Eihän ollut Turun ahtailla kujilla edes
kouluteinien äänekäs puheenporina kaupunkia vilkastuttamassa.
Kaikki olivat lähteneet teinimatkoilleen, pitäjänkäynnille, toiset
lähipitäjiin, muutamien painuessa kauas sisämaahan uusille, ennen
käymättömille seuduille.

Näitä teinimatkoja tehtiin joka kesä, väliin talvellakin joulun


aikoina ja näistäpä almunkeräysmatkoista herui köyhille
koulunkävijöille ruoka-apua usein moneksi kuukaudeksikin.
Muutamina vuosina annettiin Turun ja Viipurin triviaalikouluissa
pitäjänkäyntilupaa kaksi viikkoa elonkorjuuaikana, jolloin saalis oli
aina tavallisesti suurempi.

Niinpä nytkin saapasteli keskikesän helteisenä päivänä muutamia


Turun koulun teinejä Taivassalon pitäjässä, jossa almunanojat olivat
ensi kertaa käymässä. Pietari Niilonpoika oli oikeastaan näiltä
seuduin kotoisinkin ja kaksi muuta samassa matkueessa olevaa, Eskil
Hemminpoika ja Pitkä Mikael turkulaisia, jälkimmäinen turkulaisen
Kiukku-Nikun, rikkaan porvarin poika, jota ei isänsä olisi sallinut
teiniuralle, vaan mieluummin kauppasaksaksi, ja joka sai kerjäten
niinkuin toisetkin köyhät teinit hankkia kouluapunsa.
Nuorukaiset olivat reppuineen ehtineet Kilpisenvaaralle, johon
näkyi Taivassalon kylä ja äsken rakennettu puukirkko. Olipa
vaeltajain siinä hyvä levähtää ja vetää keuhkoihinsa oikein rinnan
täydeltä nuoren lehtipihkan lemua ja kukkien tuoksua. Pitkät
koulutunnit Anninkaisten kylmässä kouluhuoneessa ja laihat silakka-
ateriat eivät nyt johtuneet mieleenkään. Pitkä Mikael oli äsken aivan
sattumalta yhtynyt toisiin ja häneltäpä nyt tiukattiin Turun
kuulumisia.

— Mitäpä sinne… kohta vesien auettua sieltä jo lähdinkin. Pietari-


maisteri juuri palasi ulkomailta ja toi sieltä vaimonkin tullessaan,
kertoili Mikael.

— Vaimon?

— Niin. Onhan Luther kuulema antanut luvan papeille perustaa


perheen niinkuin tavallisesti.

— Heh… ja mitä meidän kunnianarvoisa piispa tästä sanoo? kyseli


Pietari-teini suu ihmetyksestä avoinna.

— Mitäpäs hän… piispahan on Lutherin opin kannattaja. Mutta


suljehan,
Pietari-veli toki suusi, kun mehiläinen juuri lentää sinne sisään.

Eskil-teini uteli vielä, miten mahtoi hänen mielitiettynsä, Kaarina


Hannun tytär nykyään voida, ja saipa nuori papiksi aikova
Hemminpoika musertavia uutisia tämän pellavatukkaisen,
sinisilmäisen ja rehevän kaunottaren uskottomuudesta.

— Jätä vain Kaarina pois mielestäsi. Juhana-herttua sitä on


lähennellyt Turun porvarien juhlissa ja tyttö ei ole ollut
vastahakoinen, olen sen omin silmin nähnyt. Puhuupa jo koko Turun
väestö puotiensa edustalla asiasta ja Hannun tyttären on kerran jo
huomattu linnassakin käyneen, tosin hunnutettuna, ettei liikoja
juoruja syntyisi. Turkulaisten porvarien emännät ovat kuitenkin hyviä
tuntemaan hunnunkin läpi…

— Älä jatka! kivahti Eskil punaisena kasvoiltaan.

— No olkoon sitten… ellet usko niin puske, mutta kyllä asia niin
vain on.

— Ja jos niin asiat ovat, niin silloinpa en astu enää jalallani koulun
kynnyksen ylitse. Lähden vaikka merille, eli jään tänne korpeen
eränkävijäksi, kuohahteli Eskil ylenmäärin suuttuneena Kaarinan
uskottomuudesta.

— Hoo, ei se vetele, virkahti Pietari-teini.

— Parempi täällä salolla on olla pappina kuin eränkävijänä ja


kukapa takaa, eikö mielesi pian kiinny johonkin
hämäläiskaunottareen. Pianpa joku sellainen sai isä-Petruksenkin
mielen sulamaan ja kuuluu nyt juuri äsken Pietari-maisterin
kehoituksesta tämän emännäkseen ottaneen. Ja pianpa se nähdään,
miten sulavaliikkeinen ja sirkeäsilmäinen se tyttö on, joka Petrus-isän
jörön mielen on saanut sidotuksi maalliseen lempeen.

— Mitä… onko Petrus-isä tuon tähän näkyvän Taivassalon kirkon


pappina? kysyi Mikael ihmeissään.

— Onpa niinkin ihan kirkkoherrana ja hänen luonaan me


saammekin maarumme täyteen ja ehkäpä hieman reppuummekin.
Mitäs muuta kun lähdemme saapastelemaan. Ehkäpä Petrus-papin
vaimolla on sirkeä sisar sinuakin varten, jatkoi Pietari hymyillen
Eskiliin kääntyen.

— Olkoon! En heistä välitä tuon enempää. Ovat kuin mitähän


perhosia, mukisi Eskil ja hujautti reppuaan mättääseen, niin että
leivän kannikat kolisivat. Mättäässä oli ampiaispesä ja
rauhanhäiritsijälle tuli kiire lähtö pesän seutuvilta. Kaikin jatkettiinkin
matkaa ja kyselemällä löytyikin pian Petrus-papin talo ja reippaasti
astuivat teinit veräjästä sisään.

Petrus-isä oli nuoren vaimonsa kanssa muokkaamassa


kasvimaataan ja hämmästyi aika tavalla turkulaisia nuorukaisia
nähdessään.

— Jumalan rauhaa taloon, toivotti Pietari ja teki syvän


kumarruksen entiselle opettajalleen.

— Mitä ihmettä… Turun poikia Taivassalossa saapastelemassa.


Olipa kauniisti tehty, kun tulitte katsomaan ja suuren maailman
uutisia kertomaan, virkkoi Petrus-pappi tervehtiessään ystävällisesti
poikia.

Nuori papin vaimo, Pirkko, ei oikein tietänyt, olisiko pitänyt


nuorukaisia tervehtiessä kumartaa vai niiata. Ensin oli kuitenkin
huitastava multasen käden syrjällä kullankeltainen hiussuortuva
siloiselta, punastuvalta poskelta ja sittenpä jo Pirkko ojensikin
kätensä naurahtaen nuorukaisille.

Nämä olivat jääneet ihmeissään katsomaan Pirkon soreutta ja


Petrus-isä näytti miltei pahastuvan moisesta vaimonsa tarkastelusta.
Mentiin tupaan ja sillä aikaa kun Pirkko valmisti mehevän
lahnakeiton, uteli Petrus-pappi tarkkaan Turun kuulumisia.
Ruokapöytään ilmestyi vielä kuudeskin henkilö, papin vaimon
nuorempi sisar, Lyyli ja niin olivat samannäköiset sisarukset, että vain
vähän solakkammasta vartalosta voi Lyyli-tytön eroittaa sisarestaan.
Tytön pöytään tultua herahti helakan valkoiselle iholle hereä puna ja
jopa nykäisi Pietari-teini toveriaan Eskiliä, kuiskaten tälle:

— Enkö sitä sanonut jo äsken…

— No olehan tuossa, keskeytti Eskil, mutta sopivassa tilassa jatkoi


Pietari:

— Onpa melkein somempi vielä tämä kuin Kaarina.

Siihen ei Eskil väittänyt vastaan, vaan unohtui silloin tällöin


silmäilemään tyttöä.

Aterian jälkeen pyysi Petrus-isä teinejä kanssaan verkonlaskuun.


Alkoi olla ruoholahnan kutuaika parhaillaan ja entistä Turun koulun
opettajaa huvitti näyttää kalastustaitoaan entisille oppilailleen.
Pyytelipä hän pojista jonkun jäämään toverikseen kalastamaan ja
silloinpa oli jo Eskil innokkaimpana tarjoutumaan.

— Jospa jäisinkin minä, virkkoi Pietari. — Oli se tyttö niin kovin


sorea…

— Etkä jää. Sinullahan on Turussa kalaporvarin tytär. Mitä sinä


tunkeudut toisen tielle, kivahti Eskil toverilleen.

Pietari nauroi, eikä malttanut olla toverilleen sanomatta:

— Onhan se sinullakin…
— Minä hänestä vähät!

— Hoo, sellaisia perhosia ne ovat kouluteinit, hohotti Pietari,


sanoen aikovansa lähteä jo illalla eteenpäin ja rauhoitellen piloillaan
Eskiliä:

— Kyllä sinä hänet saat. Katsele vain papin paikka valmiiksi.

Eskil jäikin Petrus-papin toveriksi kalastamaan. Puhuipa jo Petrus-


isä apulaisenkin ottamisesta ja antoi nuoren teinin ymmärtää, että
hyvin koulunsa läpäistyään olisi se Eskilille vapaana. Tämä sopikin
hyvin Eskil Hemminpojan suunnitelmiin, sillä syvällepä oli hän jo
ehtinyt katsoa Lyyli-tytön sinisiin silmiin ja tämäkin jo luvannut
nuorelle teinille varmempaa uskollisuutta kuin turkulaisen
porvarintytär.

Kevätjuhla.

Vuoden 1640 talvi oli ollut kylmä ja luminen, mutta kevät tuli
aikaiseen ja Turusta suolaa ja rautaa hakevat sisämaalaiset saivat
toukokuun puolimaissa tervavenheitään maataipalien yli kiskoessaan
hikoilla niinkuin keskikesän lämpimillä. Kevät-touot olivat jo tehdyt,
nauriskasket vierretyt ja joutipa siis suolanhakumatkalla hieman
viivyttelemäänkin ja katselemaan sitä vireätä touhua, joka ilmeni
tällä kertaa niin erikoisen silmään pistävänä Turun kujilla ja kaduilla.
Kuulaassa kesäisessä ilmassa kajahteli rakennusmiesten kirveitten
iskut ja raskaita rakennustarvekuormia vedättävien hevosmiesten
huudot. Turku oli saanut rakennuskuumeen. Olihan maassa ollut
rauha taas pitemmän ajan ja kauppaporvarit olivat vaurastuneet.
Kun nyt maan ensimmäinen yliopisto avattaisiin pian Turussa, tietäisi
se kaupungille aivan uutta nousukautta ja asukaslisäystä ja niinpä
kohosikin talo toisensa perästä Aurajoen varrelle ja Anninkaisten
mäen rintaan.

Uuden yliopiston rakennuspuuhat lienevät olleet kuitenkin


huomattavimmat. Jo vuosia oli ollut asia vireillä. Pietari Brahen
toimesta ja kuninkaan avulla oli asia saatu niin pitkälle, että pian
voitiin valmistella yliopiston vihkimäjuhlaa.

Turku, ja sen mukana koko maa, oli onnellinen uudesta


opinahjosta. Eihän tarvitseisi nyt enää lähettää vieraisiin maihin
opinhaluisia nuorukaisia opintojaan jatkamaan, vaan saisivat nämä
omassa maassa ja kansan omalla kielelläkin nauttia korkeampaa
opetusta.

Joutui sitten heinäkuun viidestoista päivä ja Turku pukeutui


juhlapukuun. Yliopistorakennus oli koivuilla ja köynnöksillä koristettu
ja jokaisen talon portaat olivat samoin levillä ja koivuilla somistetut.
Olipa siinä nuoret koivahaiset raivautuneet lähiseudun metsistä.
Kouluteinit olivat niitä juhlapäivän edellisenä yönä huutaen ja
hoilaten kuljettaneet isoilla kuormavankkureilla. Turun porvarien
nuori neitosakki oli punonut seppeleitä ja köynnöksiä ja ihmetellen
katseli yön jälkeen kirkkaana nouseva päivä juhlaan somistautunutta
Turkua, joka lehvä- ja kukkaisrunsaudessaan oli kuin nuori morsian.

*****

Jo varhain juhlapäivän aamuna oli piispa Iisakki Rothovius


liikkeellä, suunnaten askeleensa Eskillus Petraeuksen asunnolle.
Pujoteltuaan ahtaita kujia muutaman Auran rannalla olevan talon
pihaan, kopisti piispa Rothovius varovasti kepillään Petraeuksen

You might also like