Python Programming An Introduction To Computer Science John M. Zelle Instant Download
Python Programming An Introduction To Computer Science John M. Zelle Instant Download
https://ebookultra.com/download/python-programming-an-
introduction-to-computer-science-john-m-zelle/
https://ebookultra.com/download/the-art-science-of-java-an-
introduction-to-computer-science-1st-edition-eric-roberts/
https://ebookultra.com/download/quantum-computer-science-an-
introduction-1st-edition-n-david-mermin/
https://ebookultra.com/download/introduction-to-computing-and-
programming-in-python-a-multimedia-approach-mark-j-guzdial/
https://ebookultra.com/download/systematic-theology-an-introduction-
to-christian-belief-1st-edition-john-m-frame/
https://ebookultra.com/download/introduction-to-programming-with-
java-3rd-edition-john-dean/
https://ebookultra.com/download/introduction-to-python-for-science-
and-engineering-second-edition-david-j-pine/
https://ebookultra.com/download/a-computer-science-tapestry-exploring-
programming-and-computer-science-with-c-2nd-edition-owen-l-astrachan/
Python Programming An Introduction to Computer
Science John M. Zelle Digital Instant Download
Author(s): John M. Zelle
ISBN(s): 9781887902991, 1887902996
Edition: Pap/Cdr
File Details: PDF, 1.20 MB
Year: 2003
Language: english
Python Programming:
An Introduction to Computer Science
Version 1.0rc2
Fall 2002
Copyright c 2002 by John M. Zelle
All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted,
in any form or by any means, electronic, mechanical, photocopying, recording, or otherwise, without prior
written permission of the author.
This document was prepared with LATEX 2ε and reproduced by Wartburg College Printing Services.
Contents
i
ii CONTENTS
6 Defining Functions 85
6.1 The Function of Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
6.2 Functions, Informally . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6.3 Future Value with a Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.4 Functions and Parameters: The Gory Details . . . . . . . . . . . . . . . . . . . . . . . . . . 90
6.5 Functions that Return Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
6.6 Functions and Program Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
6.7 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Almost everyone has used a computer at one time or another. Perhaps you have played computer games or
used a computer to write a paper or balance your checkbook. Computers are used to predict the weather,
design airplanes, make movies, run businesses, perform financial transactions, and control factories.
Have you ever stopped to wonder what exactly a computer is? How can one device perform so many
different tasks? These basic questions are the starting point for learning about computers and computer
programming.
1
2 CHAPTER 1. COMPUTERS AND PROGRAMS
Output Devices
CPU
Input Devices
Secondary
Main Memory
Memory
analysis. For most problems, the bottom-line is whether a working, reliable system can be built. Often we
require empirical testing of the system to determine that this bottom-line has been met. As you begin writing
your own programs, you will get plenty of opportunities to observe your solutions in action.
You don’t have to know all the details of how a computer works to be a successful programmer, but under-
standing the underlying principles will help you master the steps we go through to put our programs into
action. It’s a bit like driving a car. Knowing a little about internal combustion engines helps to explain why
you have to do things like fill the gas tank, start the engine, step on the accelerator, etc. You could learn
to drive by just memorizing what to do, but a little more knowledge makes the whole process much more
understandable. Let’s take a moment to “look under the hood” of your computer.
Although different computers can vary significantly in specific details, at a higher level all modern digital
computers are remarkably similar. Figure 1.1 shows a functional view of a computer. The central processing
unit (CPU) is the “brain” of the machine. This is where all the basic operations of the computer are carried
out. The CPU can perform simple arithmetic operations like adding two numbers and can also do logical
operations like testing to see if two numbers are equal.
The memory stores programs and data. The CPU can only directly access information that is stored in
main memory (called RAM for Random Access Memory). Main memory is fast, but it is also volatile. That is,
when the power is turned off, the information in the memory is lost. Thus, there must also be some secondary
memory that provides more permanent storage. In a modern personal computer, this is usually some sort of
magnetic medium such as a hard disk (also called a hard drive) or floppy.
Humans interact with the computer through input and output devices. You are probably familiar with
common devices such as a keyboard, mouse, and monitor (video screen). Information from input devices is
processed by the CPU and may be shuffled off to the main or secondary memory. Similarly, when information
needs to be displayed, the CPU sends it to one or more output devices.
So what happens when you fire up your favorite game or word processing program? First, the instructions
that comprise the program are copied from the (more) permanent secondary memory into the main memory
of the computer. Once the instructions are loaded, the CPU starts executing the program.
Technically the CPU follows a process called the fetch execute cycle. The first instruction is retrieved
from memory, decoded to figure out what it represents, and the appropriate action carried out. Then the next
instruction is fetched, decoded and executed. The cycle continues, instruction after instruction. This is really
all the computer does from the time that you turn it on until you turn it off again: fetch, decode, execute. It
doesn’t seem very exciting, does it? But the computer can execute this stream of simple instructions with
blazing speed, zipping through millions of instructions each second. Put enough simple instructions together
in just the right way, and the computer does amazing things.
4 CHAPTER 1. COMPUTERS AND PROGRAMS
load the number from memory location 2001 into the CPU
load the number from memory location 2002 into the CPU
Add the two numbers in the CPU
store the result into location 2003
This seems like a lot of work to add two numbers, doesn’t it? Actually, it’s even more complicated than this
because the instructions and numbers are represented in binary notation (as sequences of 0s and 1s).
In a high-level language like Python, the addition of two numbers can be expressed more naturally: c =
a + b. That’s a lot easier for us to understand, but we need some way to translate the high-level language
into the machine language that the computer can execute. There are two ways to do this: a high-level language
can either be compiled or interpreted.
A compiler is a complex computer program that takes another program written in a high-level language
and translates it into an equivalent program in the machine language of some computer. Figure 1.2 shows
a block diagram of the compiling process. The high-level program is called source code, and the resulting
machine code is a program that the computer can directly execute. The dashed line in the diagram represents
the execution of the machine code.
An interpreter is a program that simulates a computer that understands a high-level language. Rather than
translating the source program into a machine language equivalent, the interpreter analyzes and executes the
source code instruction by instruction as necessary. Figure 1.3 illustrates the process.
The difference between interpreting and compiling is that compiling is a one-shot translation; once a
program is compiled, it may be run over and over again without further need for the compiler or the source
code. In the interpreted case, the interpreter and the source are needed every time the program runs. Compiled
programs tend to be faster, since the translation is done once and for all, but interpreted languages lend
themselves to a more flexible programming environment as programs can be developed and run interactively.
The translation process highlights another advantage that high-level languages have over machine lan-
guage: portability. The machine language of a computer is created by the designers of the particular CPU.
1.6. THE MAGIC OF PYTHON 5
Source
Code Compiler Machine
(Program) Code
Running
Outputs
Inputs Program
Source
Code Computer
(Program)
Running an
Outputs
Interpreter
Inputs
Each kind of computer has its own machine language. A program for a Pentium CPU won’t run on a Mac-
intosh that sports a PowerPC. On the other hand, a program written in a high-level language can be run on
many different kinds of computers as long as there is a suitable compiler or interpreter (which is just another
program). For example, if I design a new computer, I can also program a Python interpreter for it, and then
any program written in Python can be run on my new computer, as is.
The is a Python prompt indicating that the Genie is waiting for us to give it a command. In programming
languages, a complete command is called a statement.
Here is a sample interaction with the Python interpreter.
6 CHAPTER 1. COMPUTERS AND PROGRAMS
Here I have tried out three examples using the Python print statement. The first statement asks Python to
display the literal phrase Hello, World. Python responds on the next line by printing the phrase. The second
print statement asks Python to print the sum of 2 and 3. The third print combines these two ideas.
Python prints the part in quotes “2 + 3 =” followed by the result of adding 2 + 3, which is 5.
This kind of interaction is a great way to try out new things in Python. Snippets of interactive sessions
are sprinkled throughout this book. When you see the Python prompt in an example, that should tip
you off that an interactive session is being illustrated. It’s a good idea to fire up Python and try the examples
for yourself.
Usually we want to move beyond snippets and execute an entire sequence of statements. Python lets us
put a sequence of statements together to create a brand-new command called a function. Here is an example
of creating a new function called hello.
>>>
The first line tells Python that we are defining a new function called hello. The following lines are indented
to show that they are part of the hello function. The blank line (obtained by hitting the <Enter> key
twice) lets Python know that the definition is finished, and the interpreter responds with another prompt.
Notice that the definition did not cause anything to happen. We have told Python what should happen when
the hello function is used as a command; we haven’t actually asked Python to perform it yet.
A function is invoked by typing its name. Here’s what happens when we use our hello command.
>>> hello()
Hello
Computers are Fun
>>>
Do you see what this does? The two print statements from the hello function are executed in sequence.
You may be wondering about the parentheses in the definition and use of hello. Commands can have
changeable parts called parameters that are placed within the parentheses. Let’s look at an example of a
customized greeting using a parameter. First the definition:
>>> greet("John")
Hello John
How are you?
>>> greet("Emily")
Hello Emily
How are you?
>>>
1.6. THE MAGIC OF PYTHON 7
Can you see what is happening here? When we use greet we can send different names to customize the
result. We will discuss parameters in detail later on. For the time being, our functions will not use parameters,
so the parentheses will be empty, but you still need to include them when defining and using functions.
One problem with entering functions interactively at the Python prompt like this is that the definitions go
away when we quit Python. If we want to use them again the next time, we have to type them all over again.
Programs are usually created by typing definitions into a separate file called a module or script. This file is
saved on a disk so that it can be used over and over again.
A module file is just a text file, and you can create one using any program for editing text, like a notepad or
word processor program (provided you save your program as a “plain text” file). A special type of program
known as a programming environment simplifies the process. A programming environment is specifically
designed to help programmers write programs and includes features such as automatic indenting, color high-
lighting, and interactive development. The standard Python distribution includes a programming environment
called Idle that you may use for working on the programs in this book.
Let’s illustrate the use of a module file by writing and running a complete program. Our program will
illustrate a mathematical concept known as chaos. Here is the program as we would type it into Idle or some
other editor and save in a module file:
# File: chaos.py
# A simple program illustrating chaotic behavior.
def main():
print "This program illustrates a chaotic function"
x = input("Enter a number between 0 and 1: ")
for i in range(10):
x = 3.9 * x * (1 - x)
print x
main()
This file should be saved with with the name chaos.py. The .py extension indicates that this is a
Python module. You can see that this particular example contains lines to define a new function called main.
(Programs are often placed in a function called main.) The last line of the file is the command to invoke
this function. Don’t worry if you don’t understand what main actually does; we will discuss it in the next
section. The point here is that once we have a program in a module file, we can run it any time we want.
This program can be run in a number of different ways that depend on the actual operating system and
programming environment that you are using. If you are using a windowing system, you can run a Python
program by (double-)clicking on the module file’s icon. In a command-line situation, you might type a
command like python chaos.py. If you are using Idle (or another programming environment) you can
run a program by opening it in the editor and then selecting a command like import, run, or execute.
One method that should always work is to start the Python interpreter and then import the file. Here is
how that looks.
>>> import chaos
This program illustrates a chaotic function
Enter a number between 0 and 1: .25
0.73125
0.76644140625
0.698135010439
0.82189581879
0.570894019197
0.955398748364
0.166186721954
0.540417912062
0.9686289303
0.118509010176
>>>
8 CHAPTER 1. COMPUTERS AND PROGRAMS
Typing the first line import chaos tells the Python interpreter to load the chaos module from the file
chaos.py into main memory. Notice that I did not include the .py extension on the import line; Python
assumes the module will have a .py extension.
As Python imports the module file, each line executes. It’s just as if we had typed them one-by-one at the
interactive Python prompt. The def in the module causes Python to create the main function. When Python
encounters the last line of the module, the main function is invoked, thus running our program. The running
program asks the user to enter a number between 0 and 1 (in this case, I typed “.25”) and then prints out a
series of 10 numbers.
When you first import a module file in this way, Python creates a companion file with a .pyc extension.
In this example, Python creates another file on the disk called chaos.pyc. This is an intermediate file used
by the Python interpreter. Technically, Python uses a hybrid compiling/interpreting process. The Python
source in the module file is compiled into more primitive instructions called byte code. This byte code (the
.pyc) file is then interpreted. Having a .pyc file available makes importing a module faster the second time
around. However, you may delete the byte code files if you wish to save disk space; Python will automatically
re-create them as needed.
A module only needs to be imported into a session once. After the module has been loaded, we can run the
program again by asking Python to execute the main command. We do this by using a special dot notation.
Typing chaos.main() tells Python to invoke the main function in the chaos module. Continuing with
our example, here is how it looks when we rerun the program with 26 as the input.
>>> chaos.main()
Enter a number between 0 and 1: .26
0.75036
0.73054749456
0.767706625733
0.6954993339
0.825942040734
0.560670965721
0.960644232282
0.147446875935
0.490254549376
0.974629602149
>>>
# File: chaos.py
# A simple program illustrating chaotic behavior.
These lines are called comments. They are intended for human readers of the program and are ignored by
Python. The Python interpreter always skips any text from the pound sign (#) through the end of a line.
The next line of the program begins the definition of a function called main.
def main():
Strictly speaking, it would not be necessary to create a main function. Since the lines of a module are
executed as they are loaded, we could have written our program without this definition. That is, the module
could have looked like this:
1.7. INSIDE A PYTHON PROGRAM 9
# File: chaos.py
# A simple program illustrating chaotic behavior.
print x
x = 3.9 * x * (1 - x)
print x
Obviously using the loop instead saves the programmer a lot of trouble.
But what exactly do these statements do? The first one performs a calculation.
x = 3.9 * x * (1 - x)
This is called an assignment statement. The part on the right side of the = is a mathematical expression.
Python uses the * character to indicate multiplication. Recall that the value of x is 0 25 (from the input
statement). The computed value is 3 9 0 25 1 0 25 or 0 73125. Once the value on the righthand side is
computed, it is stored back (or assigned) into the variable that appears on the lefthand side of the =, in this
case x. The new value of x (0 73125) replaces the old value (0 25).
The second line in the loop body is a type of statement we have encountered before, a print statement.
print x
When Python executes this statement the current value of x is displayed on the screen. So, the first number
of output is 0.73125.
Remember the loop executes 10 times. After printing the value of x, the two statements of the loop are
executed again.
x = 3.9 * x * (1 - x)
print x
Of course, now x has the value 0 73125, so the formula computes a new value of x as 3 9 0 73125 1
Can you see how the current value of x is used to compute a new value each time around the loop? That’s
where the numbers in the example run came from. You might try working through the steps of the program
yourself for a different input value (say 0 5). Then run the program using Python and see how well you did
impersonating a computer.
This is called a logistic function. It models certain kinds of unstable electronic circuits and is also sometimes
used to predict population under limiting conditions. Repeated application of the logistic function can pro-
duce chaos. Although our program has a well defined underlying behavior, the output seems unpredictable.
An interesting property of chaotic functions is that very small differences in the initial value can lead to
large differences in the result as the formula is repeatedly applied. You can see this in the chaos program by
entering numbers that differ by only a small amount. Here is the output from a modified program that shows
the results for initial values of 0 25 and 0 26 side by side.
0.166187 0.960644
0.540418 0.147447
0.968629 0.490255
0.118509 0.974630
With very similar starting values, the outputs stay similar for a few iterations, but then differ markedly. By
about the fifth iteration, there no longer seems to be any relationship between the two models.
These two features of our chaos program, apparent unpredictability and extreme sensitivity to initial
values, are the hallmarks of chaotic behavior. Chaos has important implications for computer science. It
turns out that many phenomena in the real world that we might like to model and predict with our computers
exhibit just this kind of chaotic behavior. You may have heard of the so-called butterfly effect. Computer
models that are used to simulate and predict weather patterns are so sensitive that the effect of a single
butterfly flapping its wings in New Jersey might make the difference of whether or not rain is predicted in
Peoria.
It’s very possible that even with perfect computer modeling, we might never be able to measure existing
weather conditions accurately enough to predict weather more than a few days in advance. The measurements
simply can’t be precise enough to make the predictions accurate over a longer time frame.
As you can see, this small program has a valuable lesson to teach users of computers. As amazing as
computers are, the results that they give us are only as useful as the mathematical models on which the
programs are based. Computers can give incorrect results because of errors in programs, but even correct
programs may produce erroneous results if the models are wrong or the initial inputs are not accurate enough.
1.9 Exercises
1. Compare and contrast the following pairs of concepts from the chapter.
2. List and explain in your own words the role of each of the five basic functional units of a computer
depicted in Figure 1.1.
3. Write a detailed algorithm for making a peanut butter and jelly sandwich (or some other simple every-
day activity).
4. As you will learn in a later chapter, many of the numbers stored in a computer are not exact values, but
rather close approximations. For example, the value 0.1, might be stored as 0.10000000000000000555.
Usually, such small differences are not a problem; however, given what you have learned about chaotic
behavior in Chapter 1, you should realize the need for caution in certain situations. Can you think of
examples where this might be a problem? Explain.
5. Trace through the Chaos program from Section 1.6 by hand using 0 15 as the input value. Show the
sequence of output that results.
6. Enter and run the Chaos program from Section 1.6 using whatever Python implementation you have
available. Try it out with various values of input to see that it functions as described in the chapter.
7. Modify the Chaos program from Section 1.6 using 2.0 in place of 3.9 as the multiplier in the logistic
function. Your modified line of code should look like this:
12 CHAPTER 1. COMPUTERS AND PROGRAMS
x = 2.0 * x * (1 - x)
Run the program for various input values and compare the results to those obtained from the original
program. Write a short paragraph describing any differences that you notice in the behavior of the two
versions.
8. Modify the Chaos program from Section 1.6 so that it prints out 20 values instead of 10.
9. (Advanced) Modify the Chaos program so that it accepts two inputs and then prints a table with two
columns similar to the one shown in Section 1.8. (Note: You will probably not be able to get the
columns to line up as nicely as those in the example. Chapter 4 discusses how to print numbers with a
fixed number of decimal places.)
Other documents randomly have
different content
and unsophisticated mind. No God! I found it hard to shake off the thought
suggested by that man's expression.
The next day, when we were away from the Fort on our journey, I told my
companions. Susa's eyes fairly bulged with astonishment, and Joseph said,
"He must be without any mind," and we dismissed the subject; but as my
father thoroughly believed in God, and we were abroad to do his bidding
along the line of that faith, we tied on our snowshoes and took the straight
course for Pigeon Lake. Old Joseph now became guide. This was the scene
of his young manhood. Here he had trapped beaver (ever and anon we
crossed the creeks and saw the dams), here he had tracked and slain many a
moose and elk. In this vicinity huge grizzlies had licked the dust at the crack
of his old flintlock. Long years ago he had helped to make this small
winding trail which he now hoped to pick up and to keep to the lake. Big
fires and wonderful growth had changed the scene. More than twenty years
had elapsed since this road was frequented, but with unerring memory and
skill the old man picked up the road, and on we went slowly through the
deep snow, across bits of prairie, and while all around looked the same,
without a miss we would again enter the bush on the unused trail. It must
have taken centuries to develop a brain capable of thus having photographed
upon it the topography of a country.
Saturday night found us some seven or eight miles from the lake and in a
dense forest, with the snow about three feet deep on the level. Here we
camped for Sunday, and again I noticed Joseph's consistent Sabbatarianism,
for except for supper he never ceased to chop and pack wood until midnight,
and thus obviated our working any on the Sabbath. From early morn this
Indian had been tramping down the deep snow ahead of our trains, and
working his brain in order to pick up the old trail. He had lifted thousands of
pounds of snow in the course of the long day's travel, and now he willingly
and gladly works until midnight to provide wood for our camp, which, being
an open one, consumes a very large quantity. And all because it is written,
"Remember the Sabbath day to keep it holy." I do not know what my readers
will think about this, but I do know what I thought at the time, and it was
this: I would undergo hardship and danger with such a man beside me a
great deal rather than live in the same house in comfort and plenty with the
man who a few days since said to me, "I do not believe there is a God."
We spent the Sabbath quietly, and early Monday morning continued our
way, reaching the site of the proposed Mission about noon. Here we found
the cache Oliver and I had made, still secure, but surrounded with the tracks
of a wolverine, who thus far had been baffled. Into this cache we put the
balance of the provisions we had brought, and making it doubly secure, as
we thought, placed the plough on top, and then retraced our steps back to the
camp we had left in the morning. From this we reached Edmonton Tuesday
night, and were home early Thursday afternoon.
CHAPTER IV.
Epidemic breaks out among the Indians—Snow-blindness—I take to me a wife—Our
modest dowry—My father officiates as a Stationing Committee—Fearful mortality
among the Indians—Our journey to Pigeon Lake—The epidemic attacks our camp—A
rude hospital—An exciting buffalo hunt—Chased by a maddened bull—Narrow
escape.
Old Joseph, Susa and myself made a number of quick trips to and from
different camps during these March days and nights; and about the end of
the month we gave this up for the season. Then it came to pass that I put into
execution a project I had been contemplating for some time and that was to
take unto me a wife. My bride to be was the daughter of the Rev. H. B.
Steinhauer. I had met her in the autumn of 1862, when I accompanied father
on his first visit to Whitefish Lake. Our acquaintance, which had grown into
a courtship on my part, was now between two and three years old. Our
parents willingly gave us their consent and blessing. Father and Peter
accompanied us to Whitefish Lake, and father married us in the presence of
my wife's parents and people. Our "honeymoon trip" was to drive from
Whitefish Lake to Victoria with dog-train, when the season was breaking up,
and in consequence the trip was a hard one. Then after a short sojourn at
Victoria we set out for the purpose of establishing the new Mission at Pigeon
Lake, father having signified his strong desire that such should be done,
notwithstanding that the Board of Missions had not as yet either consented to
or approved of such a course. But father was thoroughly impressed with the
wisdom and necessity of such action, and finally told me I ought to go and
begin work out there; and, said he, "You can live where any man can." Of
course I was proud to have father think this of me. His knowledge of the
work required, and his confidence in my ability to do this work, more than
made up to me at the time for the fact that there was not a dollar of
appropriation from the Missionary Society. But father gave us a pair of four-
point Hudson's Bay blankets, two hundred ball and powder, and some net
twine, together with his confidence and blessing; to which in all things
mother said, "Amen."
In the meantime the epidemic we had heard rumors of came to us, and
proved to be a dangerous combination of measles and scarlet fever. Among
the Black feet and the southern tribes hundreds had died, and already the
mortality was large among the northern Crees. From camp to camp the
disease spread. As winter still lingered and the deep snow was again turning
into water on the plains and in the woods, these lawless, roving people
without quarantine protection, lacking the means of keeping dry or warm,
and altogether destitute of medicine or medical help, became an easy prey to
the epidemic.
Already many lodges of sick folk were camped close to the Mission, and
others were coming in every day. Father and mother and Peter had their
hands full in attending to the sick, ministering to the dying, and burying the
dead. And as this was a white man's disease, there were plenty of the wilder
Indians to magnify the wrongs these Indians were submitting to at the hands
of the whites. Some of them were exceedingly impudent and ugly to deal
with; indeed, if it were not for Maskepetoon and his own people, many a
time our Mission party would have suffered. As it was life was constantly in
danger. Men and women crazed and frenzied because of disease and death
were beside us night and day. Nevertheless father said "Go," and we started
from among such scenes on our journey to Pigeon Lake.
Father had loaned us two oxen and carts for the trip. I had some eight or
ten ponies, about all I had to show for five years' work; but as I had been
helpful to father in educating my brother and sister in Ontario, I was thankful
I had come off as well as I did. A great part of the way was under water. The
streams were full, but on we rode and rolled and rafted and forded.
Our party consisted of my wife and self, Oliver, a young Indian, Paul by
name, and his wife. Our provisions were buffalo meat, fresh and dry and in
pemmican. We had five bushels of potatoes with us, but these were saved for
the purpose of starting the new Mission. I purposed having every Indian who
might come to me begin a garden, and these potatoes were for seed, and
should not be eaten. Paul and I supplemented our larders by hunting. Ducks
and geese, chickens and rabbits saved the dried provisions and proved very
good fare.
We scouted carefully across and past those paths and roads converging
from the plains and south country to Fort Edmonton. Not until we had made
sure, so far as we could, that the enemy was not just then in the vicinity, did
we venture our party across these highways of the lawless tribes. Then
passing Edmonton we struck out south-westward, into a country wherein as
yet no carts or waggons had ever rolled; and now it kept Paul and myself
busy hunting and clearing the way, while Oliver and the women brought up
the carts and loose horses. Our progress was slow and tedious, but we were
working for the future as well as the present.
When up here in the winter I concluded that we could on the first trip
with carts take them to within some twenty-five miles of the lake to which
we were going. Working along as best we could, Saturday night found us at
this limit, and as we were very tired, and the weather was fine, we merely
covered our carts, made an open fire in front, and thus prepared to spend the
Sabbath in rest and quiet.
Because of the dense forest and brush we had come through, and also as
we were some thirty miles from Edmonton, we felt comparatively safe from
any war parties of plain Indians that might be roaming the country, as these
men were more or less afraid of the woods. Sunday was a beautiful day, but
towards evening there came a change, and during the night a furious
snowstorm set in. Monday morning there was nearly a foot of snow, and the
storm continued all day and on into Tuesday night. We kept as quiet as
possible under our humble shelter without fire or any warm food until
Wednesday morning, when the sun came out and the storm was over. Then
to our dismay Mrs. McDougall and Paul's wife were taken with the measles,
and sending Oliver to look after the stock, Paul and I sought the highest
ground in the vicinity, cleared away the snow, cut poles and put up our
leather lodge.
This we floored thickly with brush. Then we laid a brush causeway from
our carts to the lodge, and moved our sick folk into the tent. In the meantime
I had put some dried meat and pounded barley into a kettle to boil over the
fire, and as the only medicine we had was cayenne pepper, I put some of this
into the soup, and this was all we had for our sick ones. Just then Oliver
came in, having found the stock, but was complaining of a sore back and
headache. I gave him a cup of my hot soup to drink, and as he sat beside the
fire warming his wet feet and limbs and drinking the soup, I saw he was
covered with the measles. So I quietly told him to change his clothes and go
into the tent. Thus in our small party of five three were down with the
epidemic which was now universal in the North-West.
For the next five or six days Paul and I had our hands full to attend to the
sick night and day, to keep up the supply of firewood (for the nights were
cold and we consumed a great amount) and to look after the stock.
It was on one of these hunts, and while our sick people were steadily
convalescing, that we came upon the fresh tracks of a buffalo bull. As we
thought he might provide good meat we determined to follow him up. I think
we had kept his track steadily for three hours, when all of a sudden my
sleigh dogs, whom I had left as I thought secure at camp, came up to us on
the jump, and now took the lead on the track, and very soon were at the bull,
as we knew from their furious barking. We rode as fast as we could in the
soft ground and through the dense bush, and presently galloped out on an old
beaver-meadow. Sure enough the dogs had the bull at bay, and the old fellow
as soon as we came in sight charged straight at us. As there was an opening
into another part of the meadow I thought he was making for that, so sat my
horse, gun in hand, ready to shoot him as he passed. But this was not in the
bull's programme. He was in for a fight, and putting down his head came
right at me. My horse knew what that meant, for he already had been gored
by a mad bull, and the little fellow did not wait for a second dose, but
bounded on as fast as he could. My gun was a single-barrelled, muzzle-
loading shot-gun, and though I had a ball in, I did not care to risk my one
shot under such circumstances. In fact I very soon had all I could do to sit on
my horse, keep my gun, and save my head from being broken; for in a few
bounds we were across the meadow and into the woods, where, the ground
being soft, my horse was hard pressed by the big fellow, who was crashing
along at his heels. Fortunately "Scarred Thigh," as the Indians called him,
was no ordinary cayuse, but strong and quite speedy. Yet owing to soft
ground and brush the bull seemed to be gaining on us at several times. Paul
afterwards told me he was so close to me as to raise my pony's tail with his
horn, but could not come nearer to his much desired victims.
I knew that my horse could not, sinking as he was at every jump into the
soft ground, keep this gait up much longer, and because of the trees and
brush I had no chance to shoot back at the bull. I was momentarily expecting
to feel him hoisting us, when I spied a thick cluster of big poplars just ahead.
Now, I thought, if we can dodge behind these we may gain time on our
enemy. So I urged on my noble beast, and as if to help us, just as I pulled
him around the clump of poplars, a projecting limb knocked my cap off. This
falling right in the face of the bull for the moment blinded him, and with an
angry snort he went thundering past as I pulled behind the trees.
"My cap ... falling right in the face of the bull, for the moment blinded
him."
"That was close," said Paul, who was following up as fast as his pony
would bring him; "if he had been a bear he would have bitten your horse, but
every time he put his head down to toss you, your horse left him that much."
I jumped from my horse and patted his neck, rubbed his nose, and felt
thankful for our escape. Then we tied our animals in the shelter of the large
trees, and followed after the bull on foot, for in such ground and such timber
we were much safer on foot than on horseback.
Already our dogs had again brought the bull to bay, as we could hear, and
approaching with caution we soon saw him fighting desperately. Alert as we
were he heard us coming and again charged, but we met him with two balls,
and the old fellow staggered back to the middle of a swamp of ice and snow-
water and fell dead.
"That fellow had a bad heart, or he would not have gone out into the
middle of a pond of water to die," said Paul; and it was cold enough work
skinning and butchering him, with the ice-water up to our knees. But those
were the days when stockings and boots and rubbers were beyond our reach
in more ways than one. However, the meat was good and a providential
supply to us and our sick folk. Moreover, our dogs needed an extra feed, and
they got it.
It was late in the day when two heavily laden horses and two tired men
came in sight of camp, and it was as good medicine to Oliver, who saw us
approaching and noted the fresh meat with a smile all over his gaunt and
pale face, for the disease had wofully thinned the poor fellow. Only those
who have been in such circumstances can truly appreciate the relief
experienced by our sorely-tried party.
CHAPTER V.
Our caravan moves on—Difficulties of packing—Oliver's adventure with a buffalo—Novel
method of "blazing" a path—Arrival at Pigeon Lake—House-building—Abundance of
fish—Indians camp about the Mission—I form many enduring friendships—Indians
taught fishing with nets.
Now that our people were convalescing we began to make ready for a
fresh start, this time without carts. Everything had to be packed on the backs
of our oxen and horses, entailing no small amount of work on the part of
Paul and myself. As the ground was everywhere wet, I was afraid to run the
risk of a relapse with any of our patients, and would not let them step off the
brush flooring we had placed to keep them out of the water. The distance we
had to travel to bring us to the lake was about twenty-five miles, and we
purposed making it in two days. Our sick folk would find twelve miles far
enough for one day, and our thin and weak horses would also find the
distance sufficient.
Paul and I had two oxen and eight horses to saddle and pack with sick
folk and tent and bedding and all our household stuff, and while we did not
seem to be possessed of much of anything, yet it was quite a problem to
arrange all on the backs of those ten animals. Sometimes while we were
fastening the one pack on, three or four of our horses would lie down with
their loads, and in thus getting down and up disorganize the whole work.
We put our wives on the strongest and quietest horses, and placed Oliver
on a quiet but very hungry Blackfoot cayuse, giving him our guns to carry in
addition to his own. Thus we set out along the almost obliterated bridle-path
which I had gone over but once and that in the winter time when the snow
was deep, and which neither Paul nor Oliver had as yet seen. My memory
was sorely taxed to make out the trail where there was open country to pass
through. In single file and with slow and solemn steps our sick people rode
their steeds, while our horses labored under the burdens of their weak packs.
Paul and I were kept busy arranging these packs, for as our saddles were
crude and our binding material rawhide, this would stretch, and the saddles
or packs become loose, so that we were kept rushing from one to the other of
our transports. This made progress so slow that it did seem as if even the
twelve miles we hoped to cover would prove too much for the long spring
day. But notwithstanding all the worrying and the work we had some fun as
well. During the afternoon, while we were behind the rest fixing up a pack
on one of the horses, I heard Oliver in a greatly excited voice shouting,
"John! John! Hurry—come quick!" I sprang away to the front, and found
that our train was crossing a small bit of prairie, and from one end of it, and
coming out of the woods, there was a buffalo bull charging right straight for
Oliver.
My dogs were worrying the big fellow, but it was Oliver who demanded
my attention. He had our three guns on the saddle before him, but seemingly
never thinking of them, he kept shouting to me to "shoot the bull." In his
excitement he had let go his bridle, and this had fallen on the ground, while
his hungry horse was intent on cropping grass and would not budge from the
spot. In vain Oliver kicked and shouted; what cared that Blackfoot pony for
the charge of a buffalo? He was accustomed to this, and moreover was
hungry, and here was grass, and so far as he was concerned all else might
"go to grass." Not so philosophic, however, was his rider. He was all
excitement. With a big muffler wrapped around his face, a blanket around
his body and legs, and our three guns in his arms, he kept shouting
vehemently for "John." As I ran, not even the possibility of the bull hurting
some of us could keep me from laughing.
Oliver dared not jump from his horse into the water that surrounded us,
for I had threatened him all manner of punishment if he got wet and ran the
risk of a relapse, and he was in mortal fear of the huge bull that was now
coming quite close to him. But as I ran up, and before I could reach for my
gun from Oliver, the brute took away in another direction, thus happily
relieving the situation. He evidently was, as Paul put it, "a good-hearted
fellow," and as we had all we could very well manage, we did not fire any
shots after him. But this excitement and fun helped to break the monotony of
our journey.
It was late when we reached a point that I thought would be half way to
the lake, and we hurriedly cut brush for our patients to alight on, and
unsaddled the oxen and horses. I had put the whole of our seed potatoes on
my saddle horse, "Scarred Thigh," and he had behaved extremely well all the
day, carrying his load without a jar or disarrangement, as if he instinctively
knew we had enough trouble with the rest. But now he insisted on my taking
the load from him before I should relieve the others. As soon as I went to a
horse to unpack him the little fellow would step in between me and the other
horse, and plainly say by his actions that his was the first claim, so all our
party said, "Help him first, he deserves it." To unsaddle the ten animals and
unpack seven of them, to cut lodge-poles and erect the lodge and floor it
with brush, to chop firewood and cook supper kept Paul and I on the jump
until late, but our patients though tired were gaining strength and appetite,
and we were thankful.
The next day was a repetition of the one just described, only more so—
water deeper, timber denser, and creeks multiplying. My wife and I each had
an old-fashioned Hudson's Bay trunk. One was painted blue and the other
red, and we packed these on the biggest of the oxen, firmly securing them by
the handles before and behind, with collar straps and breeching of harness;
and now as these boxes rubbed alternately on the trees on either side of the
narrow path, one could track them by the paint, this side red and the other
blue, which often was a source of wonder to travellers who came later along
this path.
When we came nearer the lake we were glad to find that the land around
the lake, being higher than that over which we had come, was comparatively
dry, and that spring was further advanced than anywhere else along our
route. Thankful for this, we put up our skin lodge near the place where we
proposed to build our house.
We were not the first in the same line on this spot. Nearly twenty years
before Benjamin Sinclair, a native lay agent, under the direction of the Rev.
R. Rundle, began a Mission, but the coming into the vicinity of a party of
Blackfeet, and their killing of some of the people, had created a stampede
from here to Lac la Biche, some two hundred miles north-east, and this place
was abandoned.
The little clearing had well-nigh grown up again, and with the exception
of the lake in front we were surrounded with dense forests. The surrounding
country was altogether more like my native land than any other spot I had
seen in the North-West. The lake was approximately some five by eighteen
miles in size, and full of fish—too full of the whitefish for these to be of
good quality. But just now we could not test them, as the ice was in such
condition that it was not safe to attempt to set a net under it. There was
nothing to do but to wait until it melted before attempting any fishing.
Our first work was to put up a house. Humble though it might be, we
hoped to make it better than the "smoking skin lodge." As we had most of
the logs on the ground, we were not long in raising the shanty. It was another
thing, however, to whip-saw the lumber for flooring, etc. The building of the
chimney, too, was altogether a new experience to me; and when I had built
this to the proper height, I was terribly disgusted to have it smoke worse than
the lodge did. But I soon saw my mistake, and pulling the greater portion
down began anew on a different plan, which proved a great success.
One morning bright and early Providence sent us a deer. Paul took his
gun and went towards the lake to get, as I thought, a shot at some ducks. But
it was a deer he had seen, and soon he had it secured, for which we were
very thankful, as our stock of fresh meat was now low. But what is the meat
of a small deer to the eating capacity of five healthy people—especially
those of our party who were now fairly over the epidemic? When you are on
the one diet, and that wild meat, the consumption thereof is rather startling.
In the meantime the ice melted, and we made a raft, set a net and caught
some poor whitefish. We caught plenty of pike and suckers, too, and to
ourselves and dogs these were a wholesome change.
The first Indians to come to us were some pagans, having with them two
genuine old conjurers, whose drums and rattles and medicine songs were
thum-thumming and yah-yahing almost all the time they stayed with us. As
some of the older members of this camp, and nearly all the younger ones,
came to our services, which we held every evening and three times on
Sunday, these "high priests of this old faith" renewed their efforts, if one
might judge by the noise they made; but do what they would they could not
keep their young people from our meetings. After a time a larger camp came
to us, nearly all of whom were Mountain Stonies and mostly Christian or
semi-Christian in adherence, and our gatherings became very much more
interesting. But as all of these people had the measles or were convalescing
from the epidemic, and had lost many friends because of the fearful
mortality which this caused, we were hard worked in attending to the sick
and in comforting the bereaved. As to the former, Providence smiled upon
us, and all of our patients, young and old, recovered, which helped us in our
first acquaintance and gave us the beginning of an influence which grew
with the years.
Here I first met many who became my warm friends and bosom
companions around many a camp-fire and on many a hunting field, when
danger and darkness and hunger and storm alternated with peace and
sunlight and plenty and calm. Here was great big Adam, who from being a
first-class Pharisee, with demeanor a voicing of "Lord, I thank Thee," etc.,
became, through the instrumentality of a hymn I taught him to sing, humbled
and penitent, and sought forgiveness and light. He found it; and oh, how
changed he became! And there was his son Jacob, one of the grandest men I
have known, for whom both nature and grace had done great things. When I
first saw him he was recovering from the prevailing scourge. A noble fellow
he was in form and feature. He had a big record as a moose-hunter, and was
famed as a long distance runner. As he spoke both Stony and Cree fluently, I
very soon saw he was a man to be cultivated and made useful for God and
country.
Then there was "Little Beaver," a Southern Mountain Stony, who very
soon let me know that while he was glad to see me, he could never make up
his mind to live down here in the woods and lowlands, but was always
sighing for the mountains and foot-hills of his own section of the country,
and who by his descriptions made me wish to start west with him and view
for myself the land he loved. Another genuine character was "Has-no-hole-
in-his-ear," an old man with a large family of boys who became my allies
and faithful friends. The father was an ardent Christian in his way, and
thoroughly loyal to the new Mission and the young missionary.
Later there came in a camp of Crees, amongst whom was Samson, then in
his prime as a hunter, and who afterwards became the successor of
Maskepetoon as chief of the wood Crees. Samson and I soon found that we
were congenial spirits, and our warm friendship continues to this day. There
was also Paul Chian, a French mixed blood, who had grown up amongst the
Indians, and was one of them in everything but appearance. He had been a
noted gambler and warrior, and the blood of men was on his hands; but he
had found that the blood of Christ is efficacious to the cleansing from sin,
and he became a splendid character, a solid man, a class leader and a local
preacher, always in his place, and a "genuine stand-by." And there were
many good women in these camps who became our staunch friends, and in
whose lodges we received true hospitality and many real evidences of a solid
appreciation of our work and message.
These various people came and went at short intervals. I suppose during
our stay at Pigeon Lake for about two months that spring of 1865 no camp of
Indians remained longer than two weeks at a time. Until I provided them
with nets they had none. Indeed, some of the plain and wood Indians did not
know how to set a net, much less how to make or mend one. To provide
twine and teach them to make nets was an undertaking that took time to
accomplish. Then to live in one place very long was a hardship in itself to
these nomads of wood and plain, while to live on fish alone would be foolish
to them so long as buffalo were on the plains or moose and elk in the woods.
No matter as to time in the obtaining of these animals. The days and months
might come and go—these men did not value time; that appreciation is an
evolution belonging to a permanent or settled life.
CHAPTER VI.
We are visited by a band of Crees—Our guests steal away with a bunch of horses—Stonies
set out in hot pursuit—Little William's strategy—Horses recaptured—We begin
farming operations—Arrival of Mr. Steinhauer—Home to Victoria again—A
memorable Sabbath—My gun bursts—Narrow escape—My mother's cares and
anxieties—Home-made furniture.
While we were building our house, and during the stay of the Stonies
with us, a small war party of Crees came to our little settlement on their way
(so they said) to the Blackfoot country. As they knew me they came to our
lodge, and all went well the first day and night; but during the second night
they stole out of our lodge, took a bunch of the Stonies' horses and put for
home. Awakened by their retreating footsteps, I roused Paul and we struck a
light and found our guests were gone, Then we ran down to the path leading
eastward, and lighting some matches found the tracks of the horses.
Immediately we aroused
CHAPTER VII.
I travel with Maskepetoon's camp—Effects of environment on the Indians—Nature's
grandeur and beauty—Degradation through paganism—The noble Chief Maskepetoon
—Indian councils—On the fringe of the buffalo herds—Indian boy lost—A false
conjurer—The lad recovered.
Maskepetoon's camp had now been gone about two weeks, and my
instructions were to accompany this camp for part of the summer in its
movements, and to do what I could towards the Christianizing of the people.
Accordingly, taking Paul with me, and leaving our wives and Oliver with
mother, we started for the big camp. We took two oxen and carts and several
horses, as father had made arrangements with Muddy Bull to make dried
provisions for home use. Our course was down the valley of the Vermilion,
and then out through the hilly country that runs by Birch Lake to Battle
River.
Look at this delightful spot where we are encamped for the day. It is now
nearing the midsummer, and the hills and valleys are clothed in the richest
verdure. Take note of these hills and valleys. Behold the shapeliness of
yonder range of hills, and the sweep of this vale at your feet. See the
exquisite carvings of this ascent, and the beautiful rounding of that summit.
Drink in the wonderful symmetry displayed in planting those islands of
timber. Behold as yon fleecy cloud comes between the sun and the scene of
sylvan beauty, how the whole is hallowed and mellowed by the shading of
light! Think of the corrosions of ice and the cleansings of flood necessary to
create such a variety of hill and dale as this. Ponder over the ages of later
development, and calculate the layers of vegetable matter needed to make
this wealthy soil and produce this infinite variety of flora and herb and forest
and grass. Now to my mind all this is exceedingly helpful, and every time I
look upon such environment I am made a better and stronger man. Then why
not all men be thus helped and made better? All?—there it is, our faiths are
not alike. Even a wrong faith is mighty to the pulling down of "strongholds,"
and man under such influences descends.
But even here there are exceptions, and environment has its way in a
measure. Amongst these men and women you will come across those who
are big and broad and grand and noble. Blessed be the Lord for this! And one
of these latter even now is calling to me and speaking in broken English,
"John Mak-e-doo-gal-un, come here now," with big emphasis on the "now,"
and I readily recognize the voice and walk over to the lodge of the old Chief
Maskepetoon.
"So you have come, John? I asked your father to let you come with my
camp for a few weeks. There is plenty for you to do, my boy. But I called
you just now, as my tent is empty, to tell you that I am sorry and ashamed
that my son was with those young rascals who tried to steal horses from the
Stonies at Pigeon Lake.
"I told him that under the circumstances I could not have done anything if
he and his party had been killed: that he must remember that all men were
now my friends, and especially all missionaries, and if I ever fought again it
would be on the side of the missionary. That he should have gone from your
lodge to steal the horses of your people made me much ashamed and sorry in
my heart. I told your father about it, and he said the young men were foolish
to act in that way towards you—that you were the Indians' friend; and I
believe that, and I want you to work hard, and will pray the Great Spirit to
help you to gain a power over young men."
I thanked the old Chief for his confidence, and told him I should always
expect his advice and help in my work. Then I gave him my news, and he
told me what the camp's movements were to be, and that there was to be an
immense gathering of several camps for the holding of the annual festival
and "Thirst Dance" of the pagan Indians. He also told me that the buffalo
were coming northward and westward, and we should move slowly to give
them a chance to come in; that the plain Crees who were coming up country
to join us were behind the herd of buffalo; and further informed me that the
peace was effectually broken on both sides, and we might expect more or
less trouble all summer.
I sat and chatted with the Chief and had supper in his lodge, and then
arranged for an evening service in the open camp. These services elicited
much interest. Paul, who was a good singer and a fine young fellow, would
take his stand by my side. Then as we sang the people gathered, and our
service would begin. I would take advantage of our surroundings or the
occurrences of the day in the selection of my subject, and then call upon our
old Chief or some one of our native Christians to lead in prayer.
In the meantime warriors and hunters on horseback and on foot and
curious women and children with "tattooed" and painted faces would come
around and watch and listen, but with native courtesy keep silence and act
orderly and seem interested.
Thus day after day we publicly proclaimed the Gospel and teaching of the
Master according to our ability, for I was but a child in these things myself;
and yet the Lord did not despise the day of small beginnings, but blessed us
and our work. While during the week conjuring and gambling and
heathenish riots went on in many portions of the camp, such was the respect
in which Maskepetoon was held by all these people that they desisted from
these things on the Sabbath. They even gave up hunting on that day because
he wished it. Not that he thus commanded. Oh, no; he was too much of a real
gentleman and too wise in his ideas of chieftainship to do this.
Slowly we moved out on the plains. Every day brought fresh scenes, and
steadily I was becoming acquainted with these people. Maskepetoon always
invited me to their councils, and seated beside him I listened to argument
and oratory, and beheld genuine gesticulation, natural and true. Sometimes
the Chief would ask me to tell about white men and how they conducted
matters. I would respond with a short address on government and municipal
organization, or at another time speak of civilization and some of its
wonders, or give a talk on education, and Maskepetoon would say, "Listen to
John. Although he is only a child in years he is a man in experience; he has
seen far and wide, he has gone to school, he has listened for years to that
wise man his father." Then at the closing up of these council gatherings
Maskepetoon would give judgment on what had been said, either approving
or condemning, and settle the matter in discussion in his own way, when the
Council would break up for the time.
Day after day we moved slowly out on the plains, the prairie openings
growing larger. All this time strict guard was kept, and the camp travelled,
when the country would permit of it, in several parallel lines of march. At
night scouts were sent out in every direction, and all of the horses either
tethered or hobbled up close within the circle of tents.
One old conjurer drummed all night, and said that the boy was killed,
locating the place of his death in a little valley near the line of our march the
day the boy was missed. He was so particular in his description of the place
and as to the manner in which the Blackfeet had waylaid the boy, that many
thought the old conjurer was telling the truth, and quite a number went with
the "Medicine Man" to the spot he had so vividly described. But while they
found the spot just as he had indicated, there were no traces of the lost boy,
nor yet any signs of the enemy. Needless to say, the party came back very
much disgusted with their "false prophet."
Another "sight-seer" went into his mysterious lodge, and when he came
out he said the boy was alive, that he had passed to the east of our course,
and gone on until he was bewildered, and continuing his wanderings he was
found by Indians from another camp which was now coming up country
from the east to intercept us. This was more comforting, but who could
vouch for its truth! Nevertheless this did prove true, for some three or four
days later, after we had encamped for the day, some strangers were seen
approaching, and when they were formally seated, and each had taken a few
whiffs of the big pipe, one of them deigned to open his lips and tell us that a
strange boy had been found and was now in their camp; that at first he was
quite out of his head, but after a day or two came to himself, and told them
where he came from, and the place to which our camp was heading, and thus
they had intercepted us. These couriers also told us of several other camps
which were coming up to join ours for the Thirst Dance Festival. The poor
mother was overjoyed to hear of her boy's safety, and our whole camp
rejoiced with her.
CHAPTER VIII.
The "Thirst Dance"—"Tobacco messages"—The head conjurer—"Dancing lodges"—The
rendezvous—The "idol tree"—Meeting of the head conjurer and the chief of the
warriors—An anxious moment—Building the "temple"—Self-torture, dancing and
sacrifices—The festival concluded—Romantic situation for our camp.
We now were drawing close to the spot which had been indicated by the
chief priest of the season as a desirable place for the annual religious
festival. Couriers came and went from the several camps. The excitement
intensified, and our camp was all astir in anticipation of meeting with the
multitudes who, like us, were making for this common ground of
appointment. I will here give my readers a brief description of this great
festival, known as
As the season for this approached some leading men sent "tobacco
messages" to different camps near and far, intimating that the time had come
for the annual festival, and suggesting the most desirable locality. This latter
was determined largely by the proximity of buffalo and the conditions of
tribal war.
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade
Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.
ebookultra.com