100% found this document useful (4 votes)
61 views

Ebooks File Introduction To Computing and Programming in Python, Global Edition Mark J. Guzdial All Chapters

Guzdial

Uploaded by

lavingsinaa
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (4 votes)
61 views

Ebooks File Introduction To Computing and Programming in Python, Global Edition Mark J. Guzdial All Chapters

Guzdial

Uploaded by

lavingsinaa
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 52

Download the full version of the textbook now at textbookfull.

com

Introduction to Computing and Programming in


Python, Global Edition Mark J. Guzdial

https://textbookfull.com/product/introduction-to-
computing-and-programming-in-python-global-
edition-mark-j-guzdial/

Explore and download more textbook at https://textbookfull.com


Recommended digital products (PDF, EPUB, MOBI) that
you can download immediately if you are interested.

A Concise Introduction to Programming in Python Second


Edition Mark J. Johnson

https://textbookfull.com/product/a-concise-introduction-to-
programming-in-python-second-edition-mark-j-johnson/

textbookfull.com

Introduction to Scientific Programming with Python Joakim


Sundnes

https://textbookfull.com/product/introduction-to-scientific-
programming-with-python-joakim-sundnes/

textbookfull.com

Bite Size Python An Introduction to Python Programming 1st


Edition April Speight

https://textbookfull.com/product/bite-size-python-an-introduction-to-
python-programming-1st-edition-april-speight/

textbookfull.com

Enterprise and Organizational Modeling and Simulation 14th


International Workshop EOMAS 2018 Held at CAiSE 2018
Tallinn Estonia June 11 12 2018 Selected Papers Robert
Pergl
https://textbookfull.com/product/enterprise-and-organizational-
modeling-and-simulation-14th-international-workshop-eomas-2018-held-
at-caise-2018-tallinn-estonia-june-11-12-2018-selected-papers-robert-
pergl/
textbookfull.com
Values, political action, and change in the Middle East
and the Arab Spring 1st Edition Mansoor Moaddel

https://textbookfull.com/product/values-political-action-and-change-
in-the-middle-east-and-the-arab-spring-1st-edition-mansoor-moaddel/

textbookfull.com

Metasploit Penetration Testing Cookbook Evade antiviruses


bypass firewalls and exploit complex environments with the
most widely used penetration testing framework 3rd Edition
Daniel Teixeira
https://textbookfull.com/product/metasploit-penetration-testing-
cookbook-evade-antiviruses-bypass-firewalls-and-exploit-complex-
environments-with-the-most-widely-used-penetration-testing-
framework-3rd-edition-daniel-teixeira/
textbookfull.com

Building Wealth through Venture Capital A Practical Guide


for Investors and the Entrepreneurs They Fund 1st Edition
Len Batterson
https://textbookfull.com/product/building-wealth-through-venture-
capital-a-practical-guide-for-investors-and-the-entrepreneurs-they-
fund-1st-edition-len-batterson/
textbookfull.com

Data Deduplication for Data Optimization for Storage and


Network Systems 1st Edition Daehee Kim

https://textbookfull.com/product/data-deduplication-for-data-
optimization-for-storage-and-network-systems-1st-edition-daehee-kim/

textbookfull.com

Slavery in the Islamic World: Its Characteristics and


Commonality Mary Ann Fay

https://textbookfull.com/product/slavery-in-the-islamic-world-its-
characteristics-and-commonality-mary-ann-fay/

textbookfull.com
Fractional Modeling and Controller Design of Robotic
Manipulators: With Hardware Validation Abhaya Pal Singh

https://textbookfull.com/product/fractional-modeling-and-controller-
design-of-robotic-manipulators-with-hardware-validation-abhaya-pal-
singh/
textbookfull.com
Introduction to
Computing and
Programming
TM
in Python
A MULTIMEDIA APPROACH

Mark J. Guzdial and Barbara Ericson


College of Computing/GVU
Georgia Institute of Technology

Fourth Edition
Global Edition

Boston Columbus Indianapolis New York San Francisco Hoboken


Amsterdam Cape Town Dubai London Madrid Milan Munich Paris Montreal Toronto
Delhi Mexico City São Paulo Sydney Hong Kong Seoul Singapore Taipei Tokyo
Vice President and Editorial Director, ECS: Marcia J. Horton Senior Manufacturing Controller, Global Edition: Kay Holman
Executive Editor: Tracy Johnson Media Production Manager, Global Edition: Vikram Kumar
Assistant Acquisitions Editor, Global Edition: Aditee Agarwal Global HE Director of Vendor Sourcing and Procurement: Diane Hynes
Executive Marketing Manager: Tim Galligan Director of Operations: Nick Sklitsis
Marketing Assistant: Jon Bryant Operations Specialist: Maura Zaldivar-Garcia
Senior Managing Editor: Scott Disanno Cover Designer: Lumina Datamatics
Production Project Manager: Greg Dulles Manager, Rights and Permissions: Rachel Youdelman
Program Manager: Carole Snyder Associate Project Manager, Rights and Permissions: Timothy Nicholls
Project Editor, Global Edition: K.K. Neelakantan Full-Service Project Management: Kalpana Arumugam, SPi Global

MICROSOFT AND/OR ITS RESPECTIVE SUPPLIERS MAKE NO REPRESENTATIONS ABOUT THE SUITABILITY OF THE INFORMATION
CONTAINED IN THE DOCUMENTS AND RELATED GRAPHICS PUBLISHED AS PART OF THE SERVICES FOR ANY PURPOSE. ALL SUCH
DOCUMENTS AND RELATED GRAPHICS ARE PROVIDED “AS IS” WITHOUT WARRANTY OF ANY KIND. MICROSOFT AND/OR ITS
RESPECTIVE SUPPLIERS HEREBY DISCLAIM ALL WARRANTIES AND CONDITIONS WITH REGARD TO THIS INFORMATION,
INCLUDING ALL WARRANTIES AND CONDITIONS OF MERCHANTABILITY, WHETHER EXPRESS, IMPLIED OR STATUTORY, FITNESS
FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL MICROSOFT AND/OR ITS RESPECTIVE
SUPPLIERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF INFORMATION AVAILABLE FROM THE SERVICES. THE
DOCUMENTS AND RELATED GRAPHICS CONTAINED HEREIN COULD INCLUDE TECHNICAL INACCURACIES OR TYPOGRAPHICAL
ERRORS. CHANGES ARE PERIODICALLY ADDED TO THE INFORMATION HEREIN. MICROSOFT AND/OR ITS RESPECTIVE SUPPLIERS
MAY MAKE IMPROVEMENTS AND/OR CHANGES IN THE PRODUCT(S) AND/OR THE PROGRAM(S) DESCRIBED HEREIN AT ANY TIME.
PARTIAL SCREEN SHOTS MAY BE VIEWED IN FULL WITHIN THE SOFTWARE VERSION SPECIFIED.

Pearson Education Limited


Edinburgh Gate
Harlow
Essex CM20 2JE
England

and Associated Companies throughout the world

Visit us on the World Wide Web at:


www.pearsonglobaleditions.com

© Pearson Education Limited 2016

The rights of Mark J. Guzdial and Barbara Ericson to be identified as the authors of this work have been asserted by them in accordance with the
Copyright, Designs and Patents Act 1988.

Authorized adaptation from the United States edition, entitled Introduction to Computing and Programming in Python™ : A Multimedia Approach, Fourth
Edition, ISBN 9780134025544, by Mark J. Guzdial and Barbara Ericson published by Pearson Education © 2016.

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 either the prior written permission of the publisher or a license permitting restricted copying in
the United Kingdom issued by the Copyright Licensing Agency Ltd, Saffron House, 6−10 Kirby Street, London EC1N 8TS.

All trademarks used herein are the property of their respective owners. The use of any trademark in this text does not vest in the author or publisher any
trademark ownership rights in such trademarks, nor does the use of such trademarks imply any affiliation with or endorsement of this book by such owners.

British Library Cataloguing-in-Publication Data

A catalogue record for this book is available from the British Library

10 9 8 7 6 5 4 3 2 1

ISBN 10: 1-292-10986-6


ISBN 13: 978-1-292-10986-2

Typeset in 10.5/13 Times by SPi Global


Printed and bound in Malaysia.
Dedicated to our first teachers, our parents:
Janet, Charles, Gene, and Nancy
This page intentionally left blank
Contents
Preface for the Fourth Edition 13
Preface to the First Edition 18
About the Authors 24

1 INTRODUCTION 25
1 Introduction to Computer Science and Media
Computation 27
1.1 What Is Computer Science About? 27
1.2 Programming Languages 30
1.3 What Computers Understand 33
1.4 Media Computation: Why Digitize Media? 35
1.5 Computer Science for Everyone 37
1.5.1 It’s About Communication 37
1.5.2 It’s About Process 37
1.5.3 You Will Probably Need It 38

2 Introduction to Programming 42
2.1 Programming Is About Naming 42
2.1.1 Files and Their Names 44
2.2 Programming in Python 45
2.3 Programming in JES 46
2.4 Media Computation in JES 47
2.4.1 Showing a Picture 51
2.4.2 Playing a Sound 54
2.4.3 Naming Values 54
2.5 Making a Program 57
2.5.1 Functions: Real Math-Like Functions That Take
Input 61
6 Contents

3 Creating and Modifying Text 68


3.1 Strings: Making Human Text in a Computer 68
3.1.1 Making Strings from Strings: Telling Stories 70
3.2 Taking Strings Apart with For 73
3.2.1 Testing the Pieces 75
3.2.2 Taking String Apart, and Putting Strings Together 78
3.2.3 Taking Strings Apart with Indices 81
3.2.4 Mirroring, Reversing, and Separating Strings with Index 83
3.2.5 Encoding and Decoding Strings Using a Keyword Cipher 85
3.3 Taking Strings Apart by Words 87
3.4 What’s Inside a String 90
3.5 What a Computer Can Do 91

4 Modifying Pictures Using Loops 98


4.1 How Pictures Are Encoded 99
4.2 Manipulating Pictures 104
4.2.1 Exploring Pictures 108
4.3 Changing Color Values 110
4.3.1 Using Loops in Pictures 110
4.3.2 Increasing/Decreasing Red (Green, Blue) 112
4.3.3 Testing the Program: Did That Really Work? 117
4.3.4 Changing One Color at a Time 118
4.4 Creating a Sunset 119
4.4.1 Making Sense of Functions 119
4.5 Lightening and Darkening 124
4.6 Creating a Negative 125
4.7 Converting to Grayscale 126
4.8 Specifying Pixels by Index 128

5 Picture Techniques with Selection 138


5.1 Replacing Colors: Red-Eye, Sepia Tones, and Posterizing 138
5.1.1 Reducing Red-Eye 142
5.1.2 Sepia-Toned and Posterized Pictures: Using
Conditionals to Choose the Color 144
5.2 Comparing Pixels: Edge Detection 150
5.3 Background Subtraction 153
5.4 Chromakey 156
5.5 Coloring in ranges 161
Contents 7

5.5.1 Adding a Border 161


5.5.2 Lightening the Right Half of a Picture 162
5.6 Selecting without Retesting 163

6 Modifying Pixels by Position 169


6.1 Processing Pixels Faster 169
6.1.1 Looping across the Pixels with Range 171
6.1.2 Writing Faster Pixel Loops 173
6.2 Mirroring a Picture 175
6.3 Copying and Transforming Pictures 182
6.3.1 Copying 183
6.3.2 Copying Smaller and Modifying 189
6.3.3 Copying and Referencing 191
6.3.4 Creating a Collage 193
6.3.5 General Copying 196
6.3.6 Rotation 197
6.3.7 Scaling 200
6.4 Combining Pixels: Blurring 205
6.5 Blending Pictures 208
6.6 Drawing on Images 210
6.6.1 Drawing with Drawing Commands 212
6.6.2 Vector and Bitmap Representations 213
6.7 Programs as Specifying Drawing Process 215
6.7.1 Why Do We Write Programs? 216

2 SOUND 225
7 Modifying Sounds Using Loops 227
7.1 How Sound Is Encoded 227
7.1.1 The Physics of Sound 227
7.1.2 Investigating Different Sounds 230
7.1.3 Encoding the Sound 235
7.1.4 Binary Numbers and Two’s Complement 236
7.1.5 Storing Digitized Sounds 237
7.2 Manipulating Sounds 239
7.2.1 Open Sounds and Manipulating Samples 239
7.2.2 Using the JES MediaTools 242
7.2.3 Looping 243
7.3 Changing the Volume of Sounds 244
8 Contents

7.3.1 Increasing Volume 244


7.3.2 Did That Really Work? 245
7.3.3 Decreasing Volume 249
7.3.4 Using Array Index Notation 250
7.3.5 Making Sense of Functions in Sounds 251
7.4 Normalizing Sounds 251
7.4.1 Generating Clipping 253

8 Modifying Samples in a Range 259


8.1 Manipulating Different Sections of the Sound Differently 259
8.1.1 Revisiting Index Array Notation 260
8.2 Splicing Sounds 262
8.3 General Clip and Copy 269
8.4 Reversing Sounds 271
8.5 Mirroring 273
8.6 On Functions and Scope 273

9 Making Sounds by Combining Pieces 279


9.1 Composing Sounds Through Addition 279
9.2 Blending Sounds 280
9.3 Creating an Echo 282
9.3.1 Creating Multiple Echoes 284
9.3.2 Creating Chords 284
9.4 How Sampling Keyboards Work 285
9.4.1 Sampling as an Algorithm 289
9.5 Additive Synthesis 289
9.5.1 Making Sine Waves 289
9.5.2 Adding Sine Waves Together 291
9.5.3 Checking Our Result 292
9.5.4 Square Waves 293
9.5.5 Triangular Waves 295
9.6 Modern Music Synthesis 297
9.6.1 MP3 297
9.6.2 MIDI 298

10 Building Bigger Programs 302


10.1 Designing Programs Top-Down 303
10.1.1 A Top-Down Design Example 304
10.1.2 Designing the Top-Level Function 305
10.1.3 Writing the Subfunctions 307
Contents 9

10.2 Designing Programs Bottom-Up 311


10.2.1 An Example Bottom-Up Process 312
10.3 Testing Your Program 312
10.3.1 Testing the Edge Conditions 314
10.4 Tips on Debugging 315
10.4.1 Finding Which Statement to Worry About 316
10.4.2 Seeing the Variables 316
10.4.3 Debugging the Adventure Game 318
10.5 Algorithms and Design 321
10.6 Connecting to Data Outside a Function 322
10.7 Running Programs Outside of JES 326

3 TEXT, FILES, NETWORKS, DATABASES,


AND UNIMEDIA 333
11 Manipulating Text with Methods and Files 335
11.1 Text as Unimedia 335
11.2 Manipulating Parts of Strings 336
11.2.1 String Methods: Introducing Objects and Dot Notation 337
11.2.2 Lists: Powerful, Structured Text 339
11.2.3 Strings Have No Font 341
11.3 Files: Places to Put Your Strings and Other Stuff 341
11.3.1 Opening and Manipulating Files 343
11.3.2 Generating Form Letters 344
11.3.3 Reading and Manipulating Data from the Internet 345
11.3.4 Scraping Information from a Web Page 348
11.3.5 Reading CSV Data 349
11.3.6 Writing Out Programs 351
11.4 The Python Standard Library 352
11.4.1 More on Import and Your Own Modules 353
11.4.2 Adding Unpredictably to Your Program with Random 354
11.4.3 Reading CSV Files with a Library 356
11.4.4 A Sampling of Python Standard Libraries 356

12 Advanced Text Techniques: Web


and Information 361
12.1 Networks: Getting Our Text from the Web 361
12.1.1 Automating Access to CSV Data 365
12.1.2 Accessing FTP 367
Visit https://textbookfull.com
now to explore a rich
collection of eBooks, textbook
and enjoy exciting offers!
10 Contents

12.2 Using Text to Shift Between Media 368


12.3 Moving Information Between Media 371
12.4 Using Lists as Structured Text for Media Representations 374
12.5 Hiding Information in a Picture 375
12.5.1 Hiding a Sound Inside a Picture 377

13 Making Text for the Web 383


13.1 HTML: The Notation of the Web 383
13.2 Writing Programs to Generate HTML 388
13.2.1 Making Home Pages 390
13.3 Databases: A Place to Store Our Text 393
13.3.1 Relational Databases 395
13.3.2 An Example Relational Database Using Hash Tables 396
13.3.3 Working with SQL 399
13.3.4 Using a Database to Build Web Pages 401

4 MOVIES 407
14 Creating and Modifying Movies 409
14.1 Generating Animations 410
14.2 Working with Video Source 419
14.2.1 Video Manipulating Examples 419
14.3 Building a Video Effect Bottom-Up 423

15 Speed 430
15.1 Focusing on Computer Science 430
15.2 What Makes Programs Fast? 430
15.2.1 What Computers Really Understand 431
15.2.2 Compilers and Interpreters 432
15.2.3 What Limits Computer Speed? 436
15.2.4 Does It Really Make a Difference? 438
15.2.5 Making Searching Faster 441
15.2.6 Algorithms That Never Finish or Can’t Be Written 443
15.2.7 Why Is Photoshop Faster than JES? 444
15.3 What Makes a Computer Fast? 444
15.3.1 Clock Rates and Actual Computation 445
15.3.2 Storage: What Makes a Computer Slow? 446
15.3.3 Display 447
Contents 11

16 Functional Programming 450


16.1 Using Functions to Make Programming Easier 450
16.2 Functional Programming with Map and Reduce 454
16.3 Functional Programming for Media 457
16.3.1 Media Manipulation without Changing State 458
16.4 Recursion: A Powerful Idea 459
16.4.1 Recursive Directory Traversals 464
16.4.2 Recursive Media Functions 466

17 Object-Oriented Programming 471


17.1 History of Objects 471
17.2 Working with Turtles 473
17.2.1 Classes and Objects 473
17.2.2 Sending Messages to Objects 474
17.2.3 Objects Control Their State 476
17.3 Teaching Turtles New Tricks 478
17.3.1 Overriding an Existing Turtle Method 480
17.3.2 Working with Multiple Turtles at Once 481
17.3.3 Turtles with Pictures 483
17.3.4 Dancing Turtles 484
17.3.5 Recursion and Turtles 487
17.4 An Object-Oriented Slide Show 488
17.4.1 Making the Slide Class More Object-Oriented 491
17.5 Object-Oriented Media 493
17.6 Joe the Box 498
17.7 Why Objects? 499

APPENDIX 506
A Quick Reference to Python 506
A.1 Variables 506
A.2 Function Creation 507
A.3 Loops and Conditionals 507
A.4 Operators and Representation Functions 508
A.5 Numeric Functions 509
A.6 Sequence Operations 509
A.7 String Escapes 509
12 Contents

A.8 Useful String Methods 509


A.9 Files 510
A.10 Lists 510
A.11 Dictionaries, Hash Tables, or Associative Arrays 510
A.12 External Modules 510
A.13 Classes 511
A.14 Functional Methods 511

Bibliography 512

Index 515
Preface for the
Fourth Edition
We started Media Computation in the of Summer 2002, and taught it for the first time
in Spring 2003. It’s now over ten years later, which is a good time to summarize the
changes across the second, third, and fourth editions.
Media Computation has been used successfully in an undergraduate course at Geor-
gia Tech for the last dozen years. The course continues to have high retention rates (over
85% of students complete the class with a passing grade), and is majority female. Both
students and teachers report enjoying the course, which is an important recommendation
for it.
Researchers have found that Media Computation works in a variety of contexts.
The University of Illinois-Chicago had the first Media Computation paper outside of
Georgia, and they showed how switching to MediaComp improved their retention
rates in classes that were much more diverse than those at Georgia Tech [41]. The
University of California-San Diego adopted Media Computation as part of a big change
in their introductory course, where they also started using pair-programming and peer
instruction. Their paper at the 2013 SIGCSE Symposium showed how these changes
led to dramatic improvements in student retention, even measured a year later in the
Sophomore year. The paper also won the Best Paper award at the conference [27].
It’s been particularly delightful to see Media Computation adopted and adapted for
new settings, like Cynthia Bailey Lee’s creation of a MATLAB Media Computation
curriculum [12].
Mark wrote a paper in 2013, summarizing ten years of Media Computation research.
Media Computation does often improve retention. Our detailed interview studies with
female students supports the claim that they find the approach to be creative and engag-
ing, and that’s what keeps the students in the class. That paper won the Best Paper award
at the 2013 International Computing Education Research (ICER) Conference [33].

HOW TO TEACH MEDIA COMPUTATION


Over the last 10 years, we have learned some of the approaches that work best for
teaching Media Computation.

• Let the students be creative. The most successful Media Computation classes
use open-ended assignments that let the students choose what media they use.
For example, a collage assignment might specify the use of particular filters and
compositions, but allow for the student to choose exactly what pictures are used.
These assignments often lead to the students putting in a lot more time to get just
the look that they wanted, and that extra time can lead to improved learning.
14 Preface for the Fourth Edition

• Let the students share what they produce. Students can produce some beautiful
pictures, sounds, and movies using Media Computation. Those products are more
motivating for the students when they get to share them with others. Some schools
provide online spaces where students can post and share their products. Other
schools have even printed student work and held an art gallery.
• Code live in front of the class. The best part of the teacher actually typing in code
in front of the class is that nobody can code for long in front of an audience and
not make a mistake. When the teacher makes a mistake and fixes it, the students
see (a) that errors are expected and (b) there is a process for fixing them. Coding
live when you are producing images and sounds is fun, and can lead to unexpected
results and the opportunity to explore, “How did that happen?”
• Pair programming leads to better learning and retention. The research results on
pair programming are tremendous. Classes that use pair programming have better
retention results, and the students learn more.
• Peer instruction is great. Not only does peer instruction lead to better learning
and retention outcomes, but it also gives the teacher better feedback on what the
students are learning and what they are struggling with. We strongly encourage
the use of peer instruction in computing classes.
• Worked examples help with creativity learning. Most computer science classes
do not provide anywhere nearly enough worked-out examples for students to
learn from. Students like to learn from examples. One of the benefits of Media
Computation is that we provide a lot of examples (we’ve never tried to count the
number of for and if statements in the book!), and it’s easy to produce more
of them. In class, we do an activity where we hand out example programs, then
show a particular effect. We ask pairs or groups of students to figure out which
program generated that effect. The students talk about code, and study a bunch of
examples.

AP CS PRINCIPLES
The Advanced Placement exam in CS Principles1 has now been defined. We have
explicitly written the fourth edition with CS Principles in mind. For example, we show
how to measure the speed of a program empirically in order to contrast two algorithms
(Learning Objective 4.2.4), and we explore multiple ways of analyzing CSV data from
the Internet (Learning Objectives 3.1.1, 3.2.1, and 3.2.2).
Overall, we address the CS Principles learning objectives explicitly in this book as
shown below:
• In Big Idea I: Creativity:
• LO 1.1.1: . . . use computing tools and techniques to create artifacts.
• LO 1.2.1: . . . use computing tools and techniques for creative expression.
1
http://apcsprinciples.org
Preface for the Fourth Edition 15

• LO 1.2.2: . . . create a computational artifact using computing tools and techniques


to solve a problem.
• LO 1.2.3: . . . create a new computational artifact by combining or modifying
existing artifacts.
• LO 1.2.5: . . . analyze the correctness, usability, functionality, and suitability of
computational artifacts.
• LO 1.3.1: . . . use programming as a creative tool.
• In Big Idea II: Abstraction:
• LO 2.1.1: . . . describe the variety of abstractions used to represent data.
• LO 2.1.2: . . . explain how binary sequences are used to represent digital data.
• LO 2.2.2: . . . use multiple levels of abstraction in computation.
• LO 2.2.3: . . . identify multiple levels of abstractions being used when writing
programs.
• In Big Idea III: Data and information:
• LO 3.1.1: . . . use computers to process information, find patterns, and test
hypotheses about digitally processed information to gain insight and knowledge.
• LO 3.2.1: . . . extract information from data to discover and explain connections,
patterns, or trends.
• LO 3.2.2: . . . use large data sets to explore and discover information and knowl-
edge.
• LO 3.3.1: . . . analyze how data representation, storage, security, and transmission
of data involve computational manipulation of information.
• In Big Idea IV: Algorithms:
• LO 4.1.1: . . . develop an algorithm designed to be implemented to run on a
computer.
• LO 4.1.2: . . . express an algorithm in a language.
• LO 4.2.1: . . . explain the difference between algorithms that run in a reasonable
time and those that do not run in a reasonable time.
• LO 4.2.2: . . . explain the difference between solvable and unsolvable problems
in computer science.
• LO 4.2.4: . . . evaluate algorithms analytically and empirically for efficiency,
correctness, and clarity.
• In Big Idea V: Programming:
• LO 5.1.1: . . . develop a program for creative expression, to satisfy personal
curiosity or to create new knowledge.
• LO 5.1.2: . . . develop a correct program to solve problems.
• LO 5.2.1: . . . explain how programs implement algorithms.
• LO 5.3.1: . . . use abstraction to manage complexity in programs.
16 Preface for the Fourth Edition

• LO 5.5.1: . . . employ appropriate mathematical and logical concepts in program-


ming.
• In Big Idea VI: The Internet:
• LO 6.1.1: . . . explain the abstractions in the Internet and how the Internet func-
tions.

CHANGES IN THE FOURTH EDITION


1. We fixed lots of bugs that our crack bug-finders identified in the third edition.
2. We changed most of the pictures in the book – they were getting stale, and our kids
wanted us to not use as many pictures of them.
3. We added more end-of-chapter questions.
4. We added a whole new chapter, on text as a medium and manipulating strings
(to make sentences, koans, and codes). This isn’t a necessary chapter (e.g., we
introduce for and if statements, but we didn’t remove the introductions later in
the book). For some of our teachers, playing with text with shorter loops (iterating
over all the characters in a sentence is typically smaller than the thousands of pixels
in a picture) is a more comfortable way to start.
5. We gave up fighting the battle of inventing a Web scraper that could beat out the
changes that Facebook made, which kept breaking the one we put in the 3rd edition
and then kept updating on the teacher’s website2 . Instead, we wrote examples in
this book for processing CSV (Comma-Separated Values), a common format for
sharing data on the Internet. We parse the CSV from a file using string processing,
then using the CSV library in Python, and then accessing the data by URL.
6. We added some new edge detection code which is shorter and simpler to understand.
7. We added more with turtles: creating dancing turtles (using sleep from the time
module to pause execution) and recursive patterns.
8. We updated the book to use the latest features in JES, which include those that
reduce the need to use full pathnames (a problem identified by Stephen Edwards
and his students in their SIGCSE 2014 paper [43]).

ACKNOWLEDGMENTS
Our sincere thanks go out to all our reviewers and bug-finders:
• At the top of the list is Susan Schwarz of the US Military Academy at West Point.
Susan runs a large course with many instructors, and pays careful attention to
what’s going in all of the sections of the course. She turned that attention on
the third edition of this book. She caught many bugs, and gave us lots of useful
feedback. Thanks, Susan!
2
http://home.cc.gatech.edu/mediaComp and http://www.mediacomputation.org
Preface for the Fourth Edition 17

• Our other bug finders for the book were John Rutkiewicz, U. Massachusetts–
Dartmouth; Brian Dorn, U. Nebraska–Omaha; Dave Largent, Ball State Univer-
sity; Simon, University of Newcastle; Eva Heinrich, Massey University; Peter
J. DePasquale, The College of New Jersey, and Bill Leahy, Georgia Institute of
Technology.
• Matthew Frazier, North Carolina State University, worked with us in the summer
of 2014 to create a new version of JES – fixing many bugs, and improving JES
considerably.
• We are grateful for the feedback from our book reviewers for the 4th edition:
Andrew Cencini, Bennington College; Susan Fox, Macalester College; Kristin
Lamberty, University of Minnesota-Morris; Jean Smith, Technical College of the
Lowcountry; and William T. Verts, University of Massachusetts-Amherst.
• We are grateful for the input from our book reviewers for the 3rd edition, too:
Joseph Oldham, Centre College; Lukasz Ziarek, Purdue University;Joseph
O’Rourke, Smith College; Atul Prakash, University of Michigan; Noah D. Bar-
nette, Virginia Tech; Adelaida A. Medlock, Drexel University; Susan E. Fox,
Macalester College; Daniel G. Brown, University of Waterloo; Brian A. Malloy,
Clemson University; Renee Renner, California State University, Chico.

Mark Guzdial and Barbara Ericson


Georgia Institute of Technology
Preface to the First Edition
Research in computing education makes it clear that one doesn’t just “learn to program.”
One learns to program something [8, 19], and the motivation to do that something can
make the difference between learning and not learning to program [5]. The challenge
for any teacher is to pick a something that is a powerful enough motivator.
People want to communicate. We are social creatures and the desire to communicate
is one of our primal motivations. Increasingly, the computer is used as a tool for com-
munication even more than a tool for calculation. Virtually all published text, images,
sounds, music, and movies today are prepared using computing technology.
This book is about teaching people to program in order to communicate with digital
media. The book focuses on how to manipulate images, sounds, text, and movies as
professionals might, but with programs written by students. We know that most people
will use professional-grade applications to perform these type of manipulations. But,
knowing how to write your own programs means that you can do more than what your
current application allows you to do. Your power of expression is not limited by your
application software.
It may also be true that knowing how the algorithms in a media applications work
allows you to use them better or to move from one application to the next more easily.
If your focus in an application is on what menu item does what, every application is
different. But if your focus is on moving or coloring the pixels in the way you want,
then maybe it’s easier to get past the menu items and focus on what you want to say.
This book is not just about programming in media. Media-manipulation programs
can be hard to write or may behave in unexpected ways. Natural questions arise, like
“Why is the same image filter faster in Photoshop?” and “That was hard to debug—Are
there ways of writing programs that are easier to debug?” Answering questions like
these is what computer scientists do. There are several chapters at the end of the book
that are about computing, not just programming. The final chapters go beyond media
manipulation to more general topics.
The computer is the most amazingly creative device that humans have ever conceived.
It is completely made up of mind-stuff. The notion “Don’t just dream it, be it” is really
possible on a computer. If you can imagine it, you can make it “real” on the computer.
Playing with programming can be and should be enormous fun.

OBJECTIVES, APPROACH AND ORGANIZATION


The curricular content of this book meets the requirements of the “imperative-first”
approach described in the ACM/IEEE Computing Curriculum 2001 standards document
[2]. The book starts with a focus on fundamental programming constructs: assignments,
sequential operations, iteration, conditionals, and defining functions. Abstractions
Preface to the First Edition 19

(e.g., algorithmic complexity, program efficiency, computer organization, hierarchi-


cal decomposition, recursion, and object-oriented programming) are emphasized later,
after the students have a context for understanding them.
This unusual ordering is based on the findings of research in the learning sciences.
Memory is associative. We remember new things based on what we associate them with.
People can learn concepts and skills on the premise that they will be useful some day but
the concepts and skills will be related only to the premises. The result has been described
as “brittle knowledge” [25]—the kind of knowledge that gets you through the exam
but is promptly forgotten because it doesn’t relate to anything but being in that class.
Concepts and skills are best remembered if they can be related to many different
ideas or to ideas that come up in one’s everyday life. If we want students to gain
transferable knowledge (knowledge that can be applied in new situations), we have to
help them to relate new knowledge to more general problems, so that the memories get
indexed in ways that associate with those kinds of problems [22]. In this book, we teach
with concrete experiences that students can explore and relate to (e.g., conditionals for
removing red-eye in pictures) and later lay abstractions on top of them (e.g., achieving
the same goal using recursion or functional filters and maps).
We know that starting from the abstractions doesn’t really work for computing
students. Ann Fleury has shown that students in introductory computing courses just
don’t buy what we tell them about encapsulation and reuse (e.g., [7]). Students prefer
simpler code that they can trace easily and they actually think that such code is better.
It takes time and experience for students to realize that there is value in well-designed
systems. Without experience, it’s very difficult for students to learn the abstractions.
The media computation approach used in this book starts from what many people
use computers for: image manipulation, exploring digital music, viewing and creating
Web pages, and making videos. We then explain programming and computing in terms
of these activities. We want students to visit Amazon (for example) and think, “Here’s
a catalog Web site—and I know that these are implemented with a database and a
set of programs that format the database entries as Web pages.” We want students to
use Adobe Photoshop and GIMP and think about how their image filters are actually
manipulating red, green, and blue components of pixels. Starting from a relevant context
makes transfer of knowledge and skills more likely. It also makes the examples more
interesting and motivating, which helps with keeping students in the class.
The media computation approach spends about two-thirds of the time on giving
students experiences with a variety of media in contexts that they find motivating. After
that two-thirds, though, they naturally start to ask questions about computing. “Why is
it that Photoshop is faster than my program?” and “Movie code is slow—How slow do
programs get?” are typical. At that point, we introduce the abstractions and the valuable
insights from computer science that answer their questions. That’s what the last part
of this book is about.
A different body of research in computing education explores why withdrawal or
failure rates in introductory computing are so high. One common theme is that com-
puting courses seem “irrelevant” and unnecessarily focus on “tedious details” such
as efficiency [21, 1]. A communications context is perceived as relevant by students
Visit https://textbookfull.com
now to explore a rich
collection of eBooks, textbook
and enjoy exciting offers!
20 Preface to the First Edition

(as they tell us in surveys and interviews [6, 18]). The relevant context is part of the
explanation for the success we have had with retention in the Georgia Tech course for
which this book was written.
The late entrance of abstraction isn’t the only unusual ordering in this approach. We
start using arrays and matrices in Chapter 3, in our first significant programs. Typically,
introductory computing courses push arrays off until later, because they are obviously
more complicated than variables with simple values. A relevant and concrete context
is very powerful [19]. We find that students have no problem manipulating matrices of
pixels in a picture.
The rate of students withdrawing from introductory computing courses or receiving
a D or F grade (commonly called the WDF rate) is reported in the 30–50% range or
even higher. A recent international survey of failure rates in introductory computing
courses reported that the average failure rate among 54 U.S. institutions was 33% and
among 17 international institutions was 17% [24]. At Georgia Tech, from 2000 to 2002,
we had an average WDF rate of 28% in the introductory course required for all majors.
We used the first edition of this text in our course Introduction to Media Computation.
Our first pilot offering of the course had 121 students, no computing or engineering
majors, and two-thirds of the students were female. Our WDF rate was 11.5%.
Over the next two years (Spring 2003 to Fall 2005), the average WDF rate at Georgia
Tech (across multiple instructors, and literally thousands of students) was 15% [29].
Actually, the 28% prior WDF rate and 15% current WDF rate are incomparable, since
all majors took the first course and only liberal arts, architecture, and management
majors took the new course. Individual majors have much more dramatic changes.
Management majors, for example, had a 51.5% WDF rate from 1999 to 2003 with the
earlier course, and had a 11.2% failure rate in the first two years of the new course [29].
Since the first edition of this book was published, several other schools have adopted
and adapted this approach and evaluated their result. All of them have reported similar,
dramatic improvements in success rates [4, 42].

Ways to Use This Book


This book represents what we teach at Georgia Tech in pretty much the same order.
Individual teachers may skip some sections (e.g., the section on additive synthesis,
MIDI, and MP3), but all of the content here has been tested with our students.
However, this material has been used in many other ways.
• A short introduction to computing could be taught with just Chapters 2 (intro-
duction to programming) and 3 (introduction to image processing), perhaps with
some material from Chapters 4 and 5. We have taught even single-day workshops
on media computation using just this material.
• Chapters 6 through 8 basically replicate the computer science concepts from
Chapters 3 through 5 but in the context of sounds rather than images. We find
the replication useful—some students seem to relate better to the concepts of
iteration and conditionals when working with one medium than with the other.
Preface to the First Edition 21

Further, it gives us the opportunity to point out that the same algorithm can have
similar effects in different media (e.g., scaling a picture up or down and shifting a
sound higher or lower in pitch are the same algorithm). But it could certainly be
skipped to save time.
• Chapter 12 (on movies) introduces no new programming or computing concepts.
While motivational, movie processing could be skipped to save time.
• We recommend getting to at least some of the chapters in the last unit, in order to
lead students into thinking about computing and programming in a more abstract
manner, but clearly not all of the chapters have to be covered.

Python and Jython


The programming language used in this book is Python. Python has been described as
“executable pseudo-code.” We have found that both computer science majors and non
majors can learn Python. Since Python is actually used for communications tasks (e.g.,
Web site development), it’s a relevant language for an introductory computing course.
For example, job advertisements posted to the Python Web site (http://www.python.
org) show that companies like Google and Industrial Light & Magic hire Python pro-
grammers.
The specific dialect of Python used in this book is Jython (http://www.jython.
org). Jython is Python. The differences between Python (normally implemented in C)
and Jython (which is implemented in Java) are akin to the differences between any
two language implementations (e.g., Microsoft vs. GNU C++ implementations)—the
basic language is exactly the same, with some library and details differences that most
students will never notice.

TYPOGRAPHICAL NOTATIONS
Examples of Python code look like this: x = x + 1. Longer examples look like this:
def helloWorld():
print "Hello, world!"

When showing something that the user types in with Python’s response, it will have
a similar font and style, but the user’s typing will appear after a Python prompt (>>>):
>>> print 3 + 4
7

User interface components of JES (Jython Environment for Students) will be spec-
ified using a small caps font, like Save menu item and the Load button.
There are several special kinds of sidebars that you’ll find in the book.

Computer Science Idea: An Example Idea


Key computer science concepts appear like this.

22 Preface to the First Edition

Common Bug: An Example Common Bug


Common things that can cause your program to fail appear like this.


Debugging Tip: An Example Debugging Tip


If there’s a good way to keep a bug from creeping into your programs in the first place,
it’s highlighted here.


Making It Work Tip: An Example How to Make It Work


Best practices or techniques that really help are highlighted like this.


INSTRUCTOR RESOURCES
The instructor resources are available on the Pearson Education’s Instructor Resource
Center at www.pearsonglobaleditions.com/guzdial:
• PowerPoint Presentation slides

ACKNOWLEDGMENTS
Our sincere thanks go out to the following:
• Jason Ergle, Claire Bailey, David Raines, and Joshua Sklare, who made the initial
version of JES with surprising quality in an amazingly short amount of time. Over
the years, Adam Wilson, Larry Olson, Yu Cheung (Toby) Ho, Eric Mickley, Keith
McDermott, Ellie Harmon, Timmy Douglas, Alex Rudnick, Brian O’Neill, and
William Fredrick (Buck) Scharfnorth III have made JES into the useful and still
understandable tool that it is today.
• Adam Wilson built the MediaTools that are so useful for exploring sounds and
images and processing video.
• Andrea Forte, Mark Richman, Matt Wallace, Alisa Bandlow, Derek Chambless,
Larry Olson, and David Rennie helped build course materials. Derek, Mark, and
Matt created many example programs.
• There were several people who really made the effort come together at Georgia
Tech. Bob McMath, Vice-Provost at Georgia Tech, and Jim Foley, Associate Dean
for Education in the College of Computing, invested in this effort early on. Kurt
Eiselt worked hard to make this effort real, convincing others to take it seriously.
Janet Kolodner and Aaron Bobick were excited and encouraging about the idea
of media computation for students new to computer science. Jeff Pierce reviewed
Preface to the First Edition 23

and advised us on the design of the media functions used in the book. Aaron
Lanterman gave me lots of advice on how to convey the digital material content
accurately. Joan Morton, Chrissy Hendricks, David White, and all the staff of the
GVU Center made sure that we had what we needed and that the details were
handled to make this effort come together. Amy Bruckman and Eugene Guzdial
bought Mark time to get the final version completed.
• We are grateful to Colin Potts and Monica Sweat who have taught this class at
Georgia Tech and given us many insights about the course.
• Charles Fowler was the first person outside of Georgia Tech willing to take the
gamble and trial the course in his own institution (Gainesville College), for which
we’re very grateful.
• The pilot course offered in Spring 2003 at Georgia Tech was very important in
helping us improve the course. Andrea Forte, Rachel Fithian, and Lauren Rich did
the assessment of the pilot offering of the course, which was incredibly valuable in
helping us understand what worked and what didn’t. The first teaching assistants
(Jim Gruen, Angela Liang, Larry Olson, Matt Wallace, Adam Wilson, and Jose
Zagal) did a lot to help create this approach. Blair MacIntyre, Colin Potts, and
Monica Sweat helped make the materials easier for others to adopt. Jochen Rick
made the CoWeb/Swiki a great place for CS1315 students to hang out.
• Many students pointed out errors and made suggestions to improve the book.
Thanks to Catherine Billiris, Jennifer Blake, Karin Bowman, Maryam Doroudi,
Suzannah Gill, Baillie Homire, Jonathan Laing, Mireille Murad, Michael Shaw,
Summar Shoaib, and especially Jonathan Longhitano, who has a real flair for
copyediting.
• Thanks to former Media Computation students Constantino Kombosch, Joseph
Clark, and Shannon Joiner for permission to use their snapshots from class in
examples.
• The research work that led to this text was supported by grants from the National
Science Foundation—from the Division of Undergraduate Education, CCLI pro-
gram, and from the CISE Educational Innovations program. Thank you for the
support.
• Thanks to computing students Anthony Thomas, Celines Rivera, and Carolina
Gomez for allowing us to use their pictures.
• Finally but most important, thanks to our children Matthew, Katherine, and Jennifer
Guzdial, who allowed themselves to be photographed and recorded for Mommy
and Daddy’s media project and who were supportive and excited about the class.

Mark Guzdial and Barbara Ericson


Georgia Institute of Technology
Pearson would like to thank and acknowledge Dheeraj D., REVA Institute of Technol-
ogy and Management Kattigenahalli, Somitra Sanadhya, Indian Institute of Technology
Delhi, and Simon, University of Newcastle, for contributing to the Global Edition, and
Shaligram Prajapat, Devi Ahilya University Indore, Ng Hu, Multimedia University,
Rohit Tahiliani, Renjith S., and Shivani Pandit, for reviewing the Global Edition.
About the Authors
Mark Guzdial is a professor in the School of Interactive Computing in the College
of Computing at Georgia Institute of Technology. He is one of the founders of the
ACM’s International Computing Education Research workshop series. Dr. Guzdial’s
research focuses on learning sciences and technology, specifically, computing education
research. His first books were on the programming language Squeak and its use in
education. He was the original developer of “Swiki” (Squeak Wiki), the first wiki
developed explicitly for use in schools. He is a Fellow and a Distinguished Educator
of the ACM. He is on the editorial boards of the Journal of the Learning Sciences and
Communications of the ACM. He was a recipient of the 2012 IEEE Computer Society
Undergraduate Teaching Award.
Barbara Ericson is a research scientist and the director of Computing Outreach for
the College of Computing at Georgia Tech. She has been working on improving intro-
ductory computing education since 2004.
She has served as the teacher education representative on the Computer Science
Teachers Association board, the co-chair of the K-12 Alliance for the National Center
for Women in Information Technology, and as a reader for the Advanced Placement
Computer Science exams. She enjoys the diversity of the types of problems she has
worked on over the years in computing including computer graphics, artificial intelli-
gence, medicine, and object-oriented programming.
Mark and Barbara received the 2010 ACM Karl V. Karlstrom Award for Outstanding
Computer Educator for their work on Media Computation including this book. They led
a project called “Georgia Computes!” for six years, which had a significant impact in
improving computing education in the US state of Georgia [31]. Together, they Mark
and Barbara are leaders in the Expanding Computing Education Pathways (ECEP)
alliance3

3
http://www.ecepalliance.org
Random documents with unrelated
content Scribd suggests to you:
A császár szeme könnyes volt a méltóságos, szép kijelentés
után, és reszkető kézzel simogatta meg leánya szőke fejét, aki sírva
rejtette zsebkendőjébe arcát. Ez már sok volt a lieber Papának és
megveregette a síró asszony vállát:
– Na nu Luis’ na nu – mondta, aztán zsebébe nyúlt, kivette az
illatszeres üvegcsét és átadta Mária Lujzának. – Nézd meg, mit
hoztam neked, a legjobb, amit valaha csináltam. Na, mit szólsz
hozzá?
– Köszönöm, lieber Papa – szipogta a császárné és
megvigasztalódva csókolt kezet fejedelmi atyjának. Ki is akarta
kísérni, de a császár nem engedte:
– Bleib nur, du kriegst auch ’nen Schnupfen.
Ferenc császár lement a lépcsőn és az előcsarnokban
mégegyszer találkozott unokájával.
A kis fiú mosolyogva szaladt nagyapja felé. Kedves, karcsú
gyermek volt, hosszú, szőke fürtök repkedtek feje körül. Ma világos
csíkos, hosszú nadrágot viselt, fehér mellényt, sötétzöld frakkocskát,
magas gallért, szoros, fekete selyemnyakkendőt és kis kivágott
lakkcipőt. Kipirulva jött a kertből esti sétája után és Ferenc császár
egy pillanatra kedvtelve szorította térdéhez.
– Jó éjszakát, Franzl – mondta gyengéden.
A fiucska visszaszaladt Montesquiou grófnéhoz, a császár utána
nézett és akkor az oszlop mellett egy halavány leányt látott állni, aki
mélyen meghajolt az uralkodó előtt.
Őfelsége kegyesen bólintott és egész úton hazafelé azon
gondolkozott, hogy hol is látta ő már ezt a fiatal teremtést, de nem
jutott eszébe. Ferenc császár már nem emlékezett Müller
Franciskára.
Franciska térde remegett, mikor az uralkodó távozása után
felment a lépcsőn, még a karfába is bele kellett fogódznia, hogy el
ne essék a váratlan találkozás után.
– Mi baja, gyermekem? – kérdezte a grófné.
– Semmi, semmi, – felelte halkan, elfogultan Franciska – sokat
szaladgáltunk a kis felséggel, elfáradtam.
A grófné megfogta a leány kezét:
– Milyen hideg a keze. Jöjjön, Mademoiselle, pihenje ki magát
nálam. Adok egy csésze teát és kap hozzá süteményt is.
– Köszönöm, grófné, Őfelségét kell most felöltöztetnem estére,
de később nagyon szívesen meglátogatom, ha megengedi.
– Milyen csinos ruhája van megint – mondta Mária Lujza a
belépő Franciskának.
– Felséged adta a mult héten.
– A zöldcsíkos atlaszruhámból csinálta? De hisz azon nem volt
rajta a sok rózsaszín.
– A bodrokat egy régi kendőből szabtam, felség.
– Az én számomra sohasem talál ki ilyen szépet – mondta
duzzogva Mária Lujza.
Franciska csendesen mosolygott:
– Reménylem, ma meg lesz elégedve, felséged.
– Új ruhám lesz? Milyen? – Az ex-császárné boldogan kapta
magára sálját, átsietett öltözőszobájába és leült nagy tükre elé.
– Ma nagyon szép akarok lenni, Franciska, – mondta dorombolva
mint egy kényes macska – nagyon szép.
Esténként így öltöztette Franciska Napoleon feleségét, Neipperg
gróf számára. Mária Lujza felfedezte tehetségét és nehéz próbára
tette találékonyságát. Mindennap valami újat akart és semmi sem
volt elég szép! Franciskának tetszett a játék, a franciák
császárnéjának ruhatára kincsesbánya volt, csipkék, selymek,
szalagok, prémek tömege, csupa öröm tarka képzelete számára.
Rajzolt ruhákat, megálmodta a színek összhangját, a kastély régi
képeitől kért tanácsot és az új divatformák közé belelopta letűnt
századok asszonyainak szépségét. Ügyes kezek fejtették szét a
megúnt ruhákat és varrták meg újra, úgy, amint az óbudai aranyhajú
leány szeszélyes képzelete parancsolta.
Mária Lujza hiú lelke egész melegével ragaszkodott
Franciskához, az önállótlan asszony szemében minden ruha szép
volt, amit máson látott és megúnta mindjárt, amit egyszer viselt.
Franciska megfésülte úrnőjét és míg elrendezte arca körül fürteit,
Mária Lujza minduntalan belebabrált gödrös ujjacskáival.
– Oh, így nem lesz jó – nyögte panaszosan.
– Bízza rám, felség, – vigasztalta Franciska – ha végül sem
tetszik, majd újra csinálom. – És mélyen homlokába fésülte göndör
haját, hogy még fülét is elfedték a szőke csigák.
– Ilyet még sohasem láttam, ez nem szép – jelentette ki a
császárné.
– Türelem, felség, türelem – mosolygott a leány, aztán behozatta
a komornával az új ruhát.
Mária Lujza odapillantott:
– Zöld? – szólott csalódottan.
– Zöld, felség – ismételte büszkén Franciska.
– Nekem nem áll jól a zöld szín, Napoleon mindig mondta.
Franciska arca lángbaborult e név hallatára és halkan,
meggyötört hangon válaszolt:
– De a gróf kedvenc színe a zöld, amint felségedtől hallottam.
Most Mária Lujza arca is piros lett és némán tűrte, hogy ráadják a
puha sötétzöld bársonyruhát.
– Csak akkor nézzen a tükörbe, felség, ha elkészültem – kérte
Franciska.
Mikor aztán végre megbámulhatta magát, Mária Lujza elámult
saját szépségének láttára.
Hermelinszegély tompította a ruha színét a nyak körül és
lehúzódott elől dupla sorban a ruha szegélyéig, az övet pedig egy
arany domborműves csat tartotta össze. Hermelinnel szegett apró,
zöld bársonysapkát helyezett szőke fejére Franciska, mint egy
szeszélyes fejéket és elől, a ruha mély hegyben végződő
kivágásába, könnyű, fehér csipkebetétet erősített.
– Igazán gyönyörű – mondta a császárné. – No és az ékszer?
– Gyöngyöket teszünk felséged nyakára, csak a hosszú, fehér
gyöngysorát és arra kapcsoljuk fehér legyezőjét.
Kocsi gördült a kastély elé, a császárné összerezdült és keze
remegett, amint megsimogatta az előtte térdelő Franciska fejét.
– A gróf már itt van – suttogta és gyorsan tűnt el az ajtó nehéz
függönye mögött.
Franciska ott maradt térdepelve, összekulcsolta rózsaszínű
selyem bodrokban pihenő kezét, egy szomorú sóhajt küldve a hűtlen
asszony után.
Három napja mondta meg neki Montesquiou grófné, hogy
Napoleon felesége Neipperg Ádám grófot szereti, azt a hetyke,
kékszemű, fiatal generálist, aki minden este kijön hozzá, vele tölti az
esetét, aki a fekete kötést viseli hiányzó szemén, akit Franciska
egyszer látott az ex-császárné előszobájában, mikor lovagja
váratlanul látogatta meg délelőtt.
Azt is tudta Franciska, hogy Metternich választotta ki Mária Lujza
kísérőjének és tudta azt is, hogy a grófnak felesége van és négy
gyermeke. Most már mindent tudott, de jobban szerette volna, ha
nem tud meg semmit, mert a dolog szomorú volt és nagyon csúnya.
A komorna elhagyta a szobát, Franciska egyedül maradt és
amint ott térdelt a tükör előtt, hullani kezdtek könnyei. Sűrűn hullottak
zöldcsíkos ruhájának selymére, összekulcsolt kezére és arcán égő
utak maradtak nyomukban.
Miért sírt? Szerette Schönbrunnt, szerette életének mosolygó
napjait, melyek elfelejttettek vele mindent, de most hirtelen rászakadt
egész nehéz bánata.
Mária Lujza jó volt hozzá, megsimogatta fejét az új ruhákért, az
egész udvar bámulta ügyes ujjait, a kis Napoleont senki sem tudta
úgy megnevettetni mint ő és kacagva gyönyörködött mindenki, ha
színes bábuival színházat játszott neki. Ő volt az egyetlen, kivel
Montesquiou grófné őszinte szót váltott, akit szeretett, kinek a
multról beszélt. Metternich herceg megcsókolta kezét, ha jött és
hízelgő szóval akarta megnyerni kegyeit. Szép volt, fiatal és mégis
olyan reménytelenül szomorú.
Megint csak vár, vár, maga sem tudja mit, vár, épen úgy, mint
Óbudán… Kapott ugyan apró sikereket, simogatást, sok hízelgő
szót, hogy elkábítsák remegő álmait, de ezek mégis csak egyre
kiszínesednek és hívják, csalogatják, nem tudja hová és nem tudja
merre…
Mária Lujzát öltözteti, aki egy Napoleont igyekezik elfeledni, ki a
franciák császárnéja volt, kinek sorsát az egész világ szeme leste,
de kinek fejét egyetlen gondolat sem gyötörte soha, életének nagy
fordulásai egyetlen érzést sem hagytak üres szívében és sohasem
törte szőke fejét semmi elérhetetlen vágynak bánata.
És ő itt térdel összekulcsolt kezekkel, a schönbrunni udvar szelíd
Franciskája, aki a világot szeretné lángra gyújtani, hogy diadalmasan
álljon meg egy pillanatra a nagy égésben, aki szerette volna
felkorbácsolni az emberiséget, hogy ott pusztuljon el a tombolásban,
aki Napoleont imádta és azt hitte egyszer, hogy hazaviszi hozzá a
feleségét.
Gyerekkorában, ha körülötte attól féltek, hogy a Duna áradni fog,
ő remegve leste, bár öntené el már a partokat, ha vihar volt, a
villámtól csak azt kívánta, hogy csapjon le és ha szekeren ült, azt
várta mindig, hogy bár bokrosodnának meg a lovak. Sorsát is
ilyennek képzelte és nem akarta elhinni, hogy az élete folyó, amely
elmossa a partokat, vihar, amely megtépázza a fákat, paripa, amely
lassan gázolja agyon szívét, de nem árad, nem csap le és nem
bokrosodik meg soha.
Nem volt érdemes eljönnöm Óbudáról, nem kellett volna
elhagynom az apámat, ez jutott eszébe, míg beletemette arcát
kezébe, a rózsaszínű bodrok közé. Egy pillanatig tartott csupán,
gyűlölte a multon való tünődést, útálta a visszanézéseket, lényének
egész őszinteségével cselekedett mindig, számára tehát nincs
megbánás.
Letörülte könnyeit és halk léptekkel, mint minden este, belépett a
Montesquiou grófné emlékekkel teli szobájába. Itt szerette a multat,
mert mese volt és a visszaemlékezés szebb idők története.
Mária Lujza esténként együtt étkezett kis udvarával és Neipperg
gróffal. A gróf szellemesen csevegett a vacsora alatt és vacsora után
zongorázott, aztán bókokat mondott a császárnénak halkan, hogy
sokszor elpirult és tekintete lágyan simult a generális szemébe.
– Hat hónap mulva a kedvesem lesz – mondta a gróf egyik
szeretőjének, mikor Mária Lujza támaszának és lovagjának szemelte
ki Ferenc császár.
Montesquiou grófné elhagyta a társaságot, mihelyt lehetett,
gyűlölte Neipperget, megvetette Mária Lujzát és ökölbe szorult a
keze, ha úrnője kedvesen csicseregte minden szó után:
– Ön mit gondol, gróf? Mit szól hozzá, tábornokom?
A grófné szobájába sietett, ahol Franciska várta türelmetlen
örömmel szegezve sötét szemét a belépőre.
– Ma soká jöttem, gyermekem, úgy-e? Bocsásson meg,
maradnom kellett és látnom…
A grófné hirtelen elhallgatott és szürke selyemruhája halkan
zizegett, míg leült aranyos karosszékébe, íróasztala elé. Az óra tizet
ütött, Franciska melléje kuporodott kis zsámolyára, a grófné pedig
aranyláncra erősített finomművű kulcsával kizárta fiókját és elővette
Napoleon képével díszített csatos könyvét. Az imperátor adta neki,
mikor rábízta kis fiát, hogy mindent beleírjon gyermekéről. A grófné
hűséges könyvvezető volt, feljegyzett mindent a kis Napoleonról, a
nagy Napoleonról, Mária Lujzáról, Franciaországról, mindent beleírt,
amit látott, tudott, amit szenvedett.
Kinyitotta a könyvet és elgondolkozva helyezte kezét a sűrűn
teleírt aranyszélű lapra:
– Látja, gyermekem, régen itt minden sor dicsőség volt, ha ma
este feljegyzem tapasztalataimat, gyalázat és szomorúság minden
betű. Most még zongoráznak a nagy szalonban! Hallja? Montebello
hercegnő hímez, a többiek sorban elköszönnek, aztán Montebello
hercegnőnek hirtelen elfogy a hímzőselyme, tegnap a rózsaszínű,
ma a kék, a zöld, a sárga, talán a vörös, néhány pillanatra távoznia
kell és akkor a gróf megcsókolja a császárnét. Így van, tudom,
bizonyosan tudom és fellázad bennem minden jobb érzés, ha
rágondolok. Mária Lujza könnyelmű, Montebello hercegnő gonosz,
sohasem szerette Napoleont és hatalmába kerítette a feleségét
egészen, kihasználta, kifosztotta és most odadobja ennek a
szélhámos Don Juannak, ennek a közönséges nőhódítónak,
asszonyfalónak… Csitt, legyen csendesen… a zongora
elhallgatott… most… most… most megcsókolja… Napoleon
feleségét Neipperg gróf.
– Január huszonhárom – olvasta csendesen. – 1814 január
huszonharmadikán látta őt utóljára Napoleon, a fiát se látta azóta és
nem is látja talán soha. Hogy kapaszkodott bele akkor ez az
asszony, hogy zokogott, ma pedig… Milyen nap volt az, Franciska,
életemnek legfájdalmasabb sejtelmekkel teli napja. A császárnak a
harctérre kellett mennie, hogy megvédje Franciaországot a
szövetségesek ellen, az apósa ellen, az egész világ ellen. Búcsúzott,
a Tuillériák nagy termében összegyűltek a párisi testőrség tisztjei. A
császár a miséről jövet megjelent Mária Lujzával és néhány pillanat
mulva beléptem én a kis Napoleonnal. A császár kézenfogta kis fiát
és feleségét, aztán megilletődve mondta a tisztikarnak:
– Önökre bízom őket, akik a legdrágábbak nekem a világon.
Lehet, hogy az ellenség Párisig nyomul, de ha ez be is következnék,
ne hagyják magukat, mert én segítségükre sietek. Úgy-e megvédik
őket? Megigérik, úgy-e?
– Vive l’Empereur! – kiáltották a tisztek.
A palota előtti nagy téren összegyűlt legénység meghallotta
kiáltásukat és egyszerre ezer meg ezer torok ismételte:
– Éljen a császár!
Hűséget esküdött neki mindenki, de ez már csak a mult
visszhangja volt, nem pedig a jövő ígérete. A császár elbúcsúzott
feleségétől, kis fiától, trónjától, Páristól, örökre.
Franciska szeme könnyes lett, kezét összekulcsolta a grófné
ölében, az ajka remegett, és megilletődve suttogta:
– Oh, Istenem!
– Ne sírjon, gyermekem, – mondta az öreg hölgy – egy ilyen
drámának kevés és kicsi minden könny. Napoleon tudta, mikor
elhagyott bennünket, hogy kockán van egész sorsa és reményei
között is számolt minden lehetőséggel, leszámolt az élettel, hívta a
halált, csak egytől félt, hogy a császárné és kis fia az ellenség
kezébe kerül, hogy Bécsbe viszik őket. Bármit, csak ezt ne. „Ami
engem illet, – irta – inkább fojtsák meg a fiamat, semhogy osztrák
herceget neveljenek belőle, különben ismerem a császárné jellemét,
bízom benne, ő is így gondolkozik, tudom.“ Mária Lujza?…
Nevetnem kell, ha rágondolok! A kis Napoleonnak Franzl a neve,
apja nincs, nagyapja van csupán és a nagyapja Ferenc császár.
Osztrák főherceg lesz belőle, osztrák főherceg, Franciska. Míg én itt
vagyok, addig vele van a nagy mult emléke is, de engem nem soká
fog tűrni Metternich, kényelmetlenül útját állom terveinek. Minden
főhercegi nevelésnek megvan Bécsben a maga Metternichje, aki
kicsinek, minél kisebbnek akarja a nagyokat, hogy annál
hatalmasabb legyen ő. Céljuk, hogy kiöljenek minden önálló
törekvést a hercegekből, minden igaz jellemvonást, hogy
szétmorzsolják egyéniségüket a sablon kipróbált őrlőjében. Mint
lassan színtelenedő labdát, dobják őket kézről-kézre tanítóik, hogy
mire felnőnek, mindegyik csak egy-egy szappanbuborék. Oh, kis
leányom, ökölbe szorul a kezem a tehetetlen bánattól, valahányszor
ezt a kis gyermeket látom.
A grófné kétségbeesetten kulcsolta össze kezét, olyan vad
szorításban, hogy Franciska ijedten nézett fel rá.
– És Napoleon nem tudja mindezt? A császár nem ír soha? –
kérdezte halkan.
– Eleinte sokszor írt, a császárné is felelt egyszer, aztán
megtiltották neki és ő belenyugodott könnyen. Napoleon újra írt,
választ várt, hírekért könyörgött… most már nem ír többé, vagy csak
nem jutnak el hozzánk sorai? Ki tudná azt? Mária Lujzát Neipperg
gróf megtanította felejteni… Nagyon szómorú az élet, édes
gyermekem.
– Szomorú.
Franciska sírt, a grófné ölébe hajtotta aranyos fejét, úgy siratta
Napoleont, saját magát, az egész világot.
XVI. FEJEZET.

Egy pár rózsaszínű és egy pár zöld


selyem cipő.

Mária Lujza elégedetlennek érezte magát, éjjel nem aludt, reggel


nem örült a napnak, császári atyjának látogatása szálkát hagyott
szívében. Eddig is vágyott résztvenni a kongresszus örömökkel teli
forgatagában, most az újabb tilalom olthatatlan vágyat ébresztett
benne. Este Neipperg gróf halaványan, könnyezve találta, ölében a
Wiener Zeitung legújabb számával.
– Mi baj, felség? – kérdezte.
– Hiszen tudhatja, láthatja, – mondta Mária Lujza szenvedő
arccal és az újságban nagy betűkkel közzétett előzetes jelentésre
mutatott: „Karussel in der Reitschule, und maskierter Ball in den k. k.
Redoutensälen.“
A gróf elolvasta a jelentést és csudálkozva nézett a sápadt
asszonyra.
– Holnapután egész Bécs mulat, mindenki mulat, csak épen én,
épen én nem. – Az ex-császárné panasza könnyekbe fult.
– De felség, az Istenért csak nem azért szomorú, mert nem lehet
ott a karuszelen? Hogy illik ez felséged magasztos
gondolkodásához? Aztán nem sajnálná az estét? – A gróf egész
közel hajolt hozzá: – Az esténket, a szép esténket?
– Még annyi este lesz az életünkben – válaszolta dacosan a
császárné.
– Most először hoz áldozatot érte, felség.
– Én nem hozok áldozatot, mert én a bálba mennék, ha lehetne,
kényszerűségből maradok itthon.
– Nem gondol rá felség, hogy nekem most fájdalmat okoz?
– Nekem is fájdalmat okoz, hogy nem láthatom a karuszelt és
nem mehetek az álarcos bálba. – Mária Lujza haragosan tépdeste
zsebkendőjét.
A gróf halk és szelid maradt:
– Hát olyan nagyon érdekli az a karuszel felségedet?
– Kimondhatatlanul.
– Felséged már annyi ragyogó mulatságon vett részt, mint
ünnepelt királynéja a fényes estélyeknek, miért akarja épen ezt látni?
– Mert akarom, nem szabad és én akarom.
– Ha érdekli felségedet, én elmehetek és elmondok mindent.
– Persze – pattant fel a császárné, – ön is odavágyik, ön is
elhagy, mindenki elhagy engem, már látom.
Neipperg megsimogatta úrnője kezét:
– Én hagynám el? Nem hagyom el a világ minden kincséért,
épen csak felséged kedvéért mentem volna oda. Nekem a
legnagyobb örömöm, ha felségeddel lehetek, de egyetlen
szeszélyének teljesítéséért feláldozom a lelkem üdvösségét is
szívesen.
Ilyet soha sem hallott senkitől a szőke Mária Lujza és a
szerelmes szavak kicsit lecsillapították háborgó lelkét.
– És ön, gróf, nem szeretett volna résztvenni a karuszelen, a
lovagok között értem?
– Nem, felség. A huszonnégy lovag mindegyikének meglesz a
maga hölgye, akitől átveszi az ünepély kezdetén arannyal hímzett
esárpját, de az egyetlen, kitől én ujjongva fogadnám el, halálos
küzdelemre is készen, a buzdító jelvényt, nincs a hölgyek között.
Mária Lujza arca elé emelte legyezőjét:
– De hisz mindez csak tréfa, játék csupán.
– Játék, tréfa, igaza van felség és engem épen azért nem
érdekel. A középkor emlékeit idézik fel holnapután a Burg nagy
termében, de a vele járó érzések nélkül. A mi korunknak nincs már
érzéke a letűnt idők lelkesedése, különös képzeletvilága, ideális
szerelmi életének nyilvános fitogtatása iránt. Az ember ma már nem
tör lándzsát azért, hogy meggyőzzön mindenkit szíve királynéjának
szépségéről, nem kockáztatja életét a tőle kapott szalag színének
diadaláért, a szerelem ma már kerüli a feltünést és titokzatos
fátyolba burkolódzik, kiváncsi szemek elől… Azért töltsük együtt az
estét csendesen Schönbrunnban, felség.
Mária Lujza pirult, mosolygott, megnyugodott, de mikor a gróf
távozott, keserűsége és haragja ismét elűzte szívéből az est
emlékeit.
Elbúcsúzott Montebello hercegnőtől, lefeküdt, de nem aludt és
késő éjjel hivatta Franciskát.
– Holnapután nagy ünnepély lesz az udvarnál, utána álarcos bál,
én el akarok menni a bálra, Franciska.
A leány csudálkozva állt az ágy lábánál. Miért mondja ezt neki,
épen neki a császárné, most éjjel titokzatosan, halkan?
– Franciska értsen meg jól – folytatta Mária Lujza. – Édesatyám,
a császár, nem akarja, hogy ott legyek, de az álarc alatt nem fog
felismerni senki sem. A hercegnőnek nem szabad tudnia a dologról,
este, ha már mindenki nyugodni tér, elszökünk a kerten át, és a nagy
fasorban vár majd a kocsi. Ketten megyünk, kegyed, meg én,
kosztümről majd gondoskodom. Dominót veszünk, a hajunkat is
elrejtjük. Jaj, csak engem fel ne ismerjenek a lábamról. Napoleon azt
mondta mindig, hogy ezer nő közt is megtalálna, ha a lábamat látná
csupán.
– Felséged lába valóban csodálatosan kicsi – milyen jó volt az éj
közepén rázúduló szeszélyes álomban egy egyszerű megjegyzést
találnia Franciskának.
– És keskeny is – tette hozzá Mária Lujza, kidugva fehér
lábahegyét a paplan alól. – No de azért nem fog feltünni. Dominót
pedig találunk a ruhatáramban eleget. Párisban sokszor rendeztünk
álarcos bált, és észrevétlenül vegyültünk a tömegbe a császár meg
én. Őt nem is ismerték fel, de nekem mindig a legszebb volt a
ruhám. Az utolsó bálra dalmát nőnek öltöztem és a császár fejét
csóválta, mikor megtudta a ruha árát. Azért nem bánta. Mindenki azt
hitte, hogy hideg, félelmetes, pedig jó volt hozzám, nagyon szeretett
és ő félt inkább tőlem. Mindig örömet akart nekem szerezni, azt
mondta, hogy ő a világ ura, de én a világ királynéja vagyok.
– Felséged szerette Párist úgy-e? – kérdezte Franciska.
– Hogyne, hiszen csak mulatság, fény volt számomra ott az élet.
Franciska remegett a felindulástól:
– Felséged boldog lehetett nagyon?
– Persze, hogy boldog voltam, nagyon boldog, harminc ruhát is
rendelhettem egyszerre és milyen ruhákat. A legszebbeket el sem
hozhattam, azokat elvették tőlem, mikor a császárságnak vége lett.
Elvették a nagy gyöngysoromat is, melyet a kis Franzl születésekor
kaptam… – Kicsit eltünődött a trónjavesztett fejedelmi asszony, de a
vigasztaló gondolat közel volt:
– Holnapután azért elmegyek a bálba, ragyogást akarok újra
látni, fényt és pompát. Meglátja, milyen szép lesz és érdekes, nem
fog ismerni senki sem, táncolhatok, akivel akarok. Igy még sohasem
mulattam! Párisban mindig figyelmeztetni kellett az embereket, hogy
ne gondoljanak arra, hogy én vagyok a császárné, felejtsék el, de az
mégis nehezen ment. Oh be jó lesz! Adja ide gyorsan a
pongyolámat, mindjárt kikereshetjük a dominókat. Aztán vigyáznunk
kell, hogy a hercegnő meg ne tudja, ő elárulna, a hercegnő mindig
azt akarja, amit a lieber Papa akar. Én is azt akarom, de most az
egyszer nem baj, mert titok marad… A grófnak sem mondom el, a
grófnak rosszul esnék, mert ez olyan, mintha elszökném egy kicsit
Párisba…
*
Egész Bécs izgalomban volt a nagy ünnepély napján, Metternich
olyat akart mutatni az idegen fejedelmeknek, amilyet még sohasem
láttak és ami felülmuljon mindent, amit a kongresszus eddig nyújtott.
A kancellárnak Ludovika császárné segített, aki olyan ünnepélyekre
vágyott, milyeneket emberi szem sohasem látott, aki élőképekben
élvezte a szerelmet és mások játszi csókjában, ami valóra sohasem
vált életében. A császárné letűnt korok bársony ruhájában,
sólyommal vállán ment vadászni, hárfázott és míg magas, sötét
karosszékben a Burg ablakában hímezett, selyemruhás apródról
álmodott, aki lábánál ülve, epedő szonettekben énekelje meg
szépségét. A karuszel ajándék volt hát regényes lelke számára és
rendezése gyönyör.
A Burg hatalmas lovardájában, külön nagy páholyt építettek, a
császárok, királyok, fejedelmek számára, és a nagy estén nehéz,
vörös függönyök között, ott ült dobogó szívvel a halavány, szép
Mária Ludovika, mellette pedig vállára hulló hamvas fürteivel,
bánatos, lemondó mosolyával Erzsébet, az orosz cár szenvedő,
annyiszor megcsalt felesége.
Az uralkodókkal szemben ült a huszonnégy szívkirályné, a
huszonnégy lovag huszonnégy hölgye, hosszú leomló fátyolokkal
eltakarva, mint regényes szerelmeknek ragyogó titkai.
Amint a fejedelmek helyet foglaltak, és felettük a karzaton
megszólalt a halk zene, a hölgyek hátravetették fátyolukat és ott
álltak ezer meg ezer gyertya fényében, tapsok, éljenkiáltások
viharában. Szépek voltak, hatan-hatan egyforma színben, egyforma
viseletben, magyar, lengyel, francia, osztrák, középkori ruhákban,
ékszerekkel teleszórt zöld, vörös, kék és fekete bársonyban. Valaki
akadt, aki kiszámította, hogy tizenöt millió forintot ért a drágakövek
és kincsek halmaza, mely beragyogta szépségüket. Az est királynéja
Zichy grófné volt. A szép Juliát nemcsak Frigyes Vilmos találta
legszebbnek. Magyar ruhájának fehér atlasza felett gyémánt csattok
tartották a zöld bársony tunikát, és a fehér fátyolok fölé omló sötét
bársony ujjat is ugyanolyan fehér, tündöklő ékkövek fonták át.
Arannyal hímzett mellénykéjén smaragdok és rubinok ragyogtak és
fejéről a ruha szegélyéig úszó fehér fátyolán gyöngysorok folytak le,
mintha minden tengerek mélye elküldte volna neki kincseit.
Sagan hercegnő is pompás volt lengyel ruhájában és Bagration
hercegnő, a szeszélyes kis francia dáma, aki úgy hatott, mintha XIII.
Lajos udvarából szökött volna ide Bécsbe, elfeledtetve mindenkivel a
századok múlását.
A huszonnégy lovag meghajtotta lándzsáját az uralkodók előtt,
aztán hölgyeikhez lovagolva, átvették a küzdelemre buzdító hímzett
szalagokat. A zene szólt, a karzatokat megszakító korintusi
oszlopokra erősített, címeres pajzsokon lengtek a zászlók, az
apródok mozdulatlanul álltak, a vitézek fekete lovaikon
körülvágtatták a nagy termet, és nyergeik alatt libegtek a zöld, vörös,
kék, fekete, súlyos, hímzett takarók.
A hősi játék megkezdődött, a közönség ujjongott, a császárnék
kegyesen bólintottak, a hölgyek arca égett. A lovagok lelkesedve
láttak a küzdelemhez és a győzők hölgyeik szemének ragyogásában
keresték jutalmukat, úgy mint régen, sok száz évvel azelőtt.
Aztán az álom véget ért, a Burg órája tizet ütött, a fekete lovak
türelmetlenül táncoltak a porondon és a hölgyek meghajoltak az
uralkodói páholy előtt. Ferenc császár hosszú arca csupa mosoly
volt, kopasz fejével szüntelenül bólogatott, a szomszéd teremben
pedig vacsora várta az est hőseit.
Magas emelvényen, arany edénnyel terített asztal mellett ültek
középen a fejedelmek, balra tőlük a hercegek, a miniszterek, a
kongresszus tagjai, jobbra a huszonnégy vitéz hölgyeivel.
Köröskörül, meg a szomszéd termekben a meghívott vendégek
foglaltak helyet, miközben hárfások dalokat énekeltek, hogy magas
hegyfokon épült, régi, bástyás lovagvárba álmodhassa magát
mindenki, aki tud és ráér álmodni.
Mária Ludovika császárné mosolyán látszott, hogy ő messze jár.
Az ő képzelete teremtette meg ennek az estének fényét, ő hozatta a
virágfüzéreket mindenünnen, ahol ősszel is virág terem, ő rakatta
tele csudálatos gyümölcsökkel az arany tálakat, ő állította a fehér
csipke abroszokra a színes porcellán lovagokat, az ő lelke ezer
színben tudott ragyogni, a szép láttára úgy, mint a gyertyák fényében
tündöklő csillárok tiszta kristálya. Aznap este beszédes, rózsás volt a
fehér Milano Bécsbe száműzött leánya. Az osztrák császárné boldog
volt, néhány tűnő perc mámorában.
A schönbrunni kastély órái is elütötték már a tizet és Mária Lujza
nem marasztalta Neipperg grófot, Montesquiou grófné hiába várta
Franciskát, a kerti utakon pedig titokzatos lábnyomokat rajzolt egy
pár rózsaszínű és egy pár zöld selyem cipő.
Soká keresgélt Mária Lujza dominói között, míg kiválasztotta a
zöldet, meg a rózsaszínűt, órákig tünődött aztán, melyik illenék neki
jobban, végre a rózsaszín mellett döntött, de mire lihegve dőlt a
fasorban reájuk váró kocsi szögletébe, már megbánta, hogy nem a
zöldet vette fel. Olyan szép is volt Franciska, púder nélkül is fehér a
bőre, pirosító nélkül is rózsás az arca, és a zöld kucsma alatt
ragyogot a szeme.
– Tegyük fel az álarcunkat, nehogy benézzen valaki a hintó
ablakán, – mondta, egyet sóhajtva az excsászárné.
Aztán Párisról kezdett mesélni, elveszett trónjáról, sok letűnt
fényről, egy halott világról és Franciska kérdezett, mindig újra
kérdezett, mert Mária Lujza szívének hiú emlékei között egy
morzsányi Napoleon utáni vágyakozást szeretett volna találni. A mai
est varázsával akarta őt elrabolni Neipperg gróftól örökre. Ma végre
ismét történik valami egyhangú életében és ő cselekedhetik a nagy,
szent cél érdekében, amely fogva tartotta lelkét, mióta a
Montesquiou grófné közelében élt.
Napoleon! az ő neve lett ismét az egyetlen, ami tiszta, csendes
sorsát beragyogta.
Milyen jól esett a tudat, hogy Mária Lujza Metternich, Neipperg
gróf és Montebello hercegnő ellen szövetkezett vele ma estére és
titkával akaratlanul, mit sem sejtve, Napoleon híveihez láncolódik.
A kocsi megállt, felsuhantak a ragyogó virágfüzéres lépcsőkön és
elbűvölve álltak meg egy pillanatra a narancsfasorban, mely a nagy
táncteremhez vezetett. A fák fehér virágdíszben álltak egymás
mellett hosszú sorban, és közöttük égtek hatalmas viaszgyertyás
kandeláberek. Nyolcezer gyertya égett a teremben, virágok közé
rejtve szólt a zene a karzaton, ezüst rojtos, fehér selyemmel díszített
magas emelvényen foglaltak helyet az uralkodók, és előttük, a terem
közepén, a huszonnégy lovag négyest táncolt huszonnégy fátyolos
hölgyével.
Az első, akit Franciska a lovagok között megpillantott, Hardenegg
Rudolf gróf volt. Szíve megdobbant! Gyönyörű ifjú leánnyal táncolt a
gróf és bizonyosan már régen elfeledte őt. Franciska a vörös darura
szorította kezét! Vajjon akart-e tenni érte igazán valamit, úgy amint
igérte? Szeretett volna beszélni vele és tudta, hogy kerülnie kell.
Amint így állt a tömeg között, kicsinek, kitaszítottnak érezte
magát. Hiszen aki nemrég úgy szerette, most mással táncol. Vajjon
mit szólna, ha tudná, hogy ő itt áll, ő, akinek egy őszi estén megkérte
kezét, lobogó gyertyafénynél, Óbudán, egy barna ház kapualjában?
Talán nem is emlékeznék rá! Más világ ez, új vágyakról, ragyogóbb
érzésekről beszél.
Szép volt Hardenegg sötétzöld bársony ruhában, sárga
csizmájában. Előkelően, finoman mozgott, fehér tollas nagy
kalpagján ragyogott a gyémánt forgó, és Franciska szíve hallotta
arany sarkantyújának pengését.
Milyen büszke érzés lehet táncolni vele, melegedni egy ilyen férfi
szerelmes pillantásában. Talán kezében kellett volna hagynia kezét
akkor, októberben, mikor a darvak szállnak, mikor örök szerelmek
születnek az őszi hervadásban.
Egy hónap telt el azóta. Mi változott sorsában annyi esemény
között? Semmi. De ha nem változott, hát majd fog. Az egész világ
nyitva áll előtte és ő követelni fogja jussát az élettől, nem kell a halk
érzelem, a mosolygó megalkuvás; szerelem kell, nagyság,
szenvedély…
– Bécsben is szép, úgy-e? – kérdezte Mária Lujza.
– Szép, felség, nagyon szép, – felelte Franciska.
– Csitt, nem szabad nekem azt mondania felség, nevezzen
Lujzának!
A társalgás halkan folyt, nem hallotta senki, csak egy fekete
bársony ruhás spanyol grand, aki a két, kicsit megriadt nőt
belépésük óta figyelte, kalandra vágyva.
Most kardjához kapott fehér keztyűs kezével, vidám fénnyel telt
meg sötét szeme, lekapta nagy bársony kalapját, és azzal a könnyed
fesztelenséggel hajolt közel Mária Lujzához, mellyel csak álarcos
bálokon lehet megszólítani a hölgyeket:
– Jó estét, felség – mondta ingerkedve.
– Na látja – fakadt ki Franciska felé fordulva a császárné és szó
nélkül el akart tűnni a tömegben.
– Oh istenem, hát nem is fogadja köszöntésemet? Úgy látszik, le
kell lepleznem inkognitómat. – A szép spanyol felemelte álarcát, egy
pillanatra találkozott tekintetük és Mária Lujza ijedten, halkan
sikoltotta:
– Beauharnais Eugén! De hogy ismert meg?
– A megismerés csak e percben történt, eddig annyit tudtam
csupán, hogy egy felséges hölgy, kíváncsi voltam, ki lehet, mert a
felségek ma nem vegyülnek el a halandók tömegében. Most elárulta
magát, Mária Lujza.
A császárné hirtelen Eugén karjába fűzte kezét:
– Vigyázzon kérem, senkinek sem szabad tudnia, hogy itt
vagyok. Istenem, mindjárt sírok.
– Ne tegye, a világért se tegye, én kielégítettem
kíváncsiságomat, higyje el, amint belépett, mindjárt tudni akartam, ki
lehet ez a kis rózsabimbó. Nem árulom el, esküszöm, igaza van, ha
egyszer megszökik a schönbrunni kolóstorból.
– Ma történik először – mondta méltóságosan a felség.
– Velem szemben nem kell védekeznie, különbenb is mindegy, fő
az, hogy élvezze az estét. Tekintsen lovagjának, nem fogom zavarni
mulatságában, de ha szüksége van támaszra a kalandos vállalkozás
közben, forduljon hozzám.
– Még csak ez kellett – nevetett a császárné megvigasztalódva.
Az ünnepi négyes véget ért, felhangzott a polonéz és Mária
Lujzát táncra kérte egy bajazzo.
– Kegyed is egy kis felség? – fordult Franciskához Napoleon
mostoha fia.
– Kérem ne kérdezzen, úgy sem árulom el, ki vagyok.
– Biztos?
– Oh egészen bizonyos.
– Óhajt táncolni?
– Köszönöm, inkább nézni szeretnék egy keveset.
– Nem ismeri még a társaságot? Párisból jött Mária Lujzával?
– Jaj Istenem, már megint kérdez. Tudja mit, majd én kérdezek
inkább.
– Mit óhajt tudni?
– Sok mindent. Először is mutassa be nekem az uralkodókat,
persze így, a távolból.
– Nem ismeri őket? – csudálkozott Beauharnais.
– Nem bírom leszoktatni a kérdezésről, de most kivételesen
felelek. Csak…
Franciska elhallgatott. A cár arca jelent meg képzeletében, amint
bizalmasan hajlik hozzá a budai bálon.
– Nos? – kérdezte Beauharnais.
Franciska összerezzent.
– Csak Ferenc császárt ismerem, mondotta azután nyugodtan.
Beauharnais Eugén karját nyújtotta Franciskának:
– Jöjjön, menjünk közelebb, hogy jobban láthassa a világ urait.
Én is ott lehetnék a főhercegek között, de sokan megszöktünk
vacsora után, kedvesebb a bálban részt venni, mint nézni. Hogy
fájna az orosz cárnak, ha ott kellene ülnie, míg mások mulatnak.
– Az orosz cár nincs itt?
– Nincs, beteg, majd a karuszelt megismétlik tiszteletére. Látja,
Sándor cár kedves ember, más mint a többiek, neki köszönhetem,
hogy itt némiképen elismerik létjogosultságomat.
– Miért?
– Oh be kedves. Reménylem, azt tudja, hogy a Napoleon
mostoha fia vagyok, hogy szerettem őt és lelkesedtem érte?
– Már nem szereti?
– Szeretem és szeretni fogom mindig, csakhogy az élet hív. Jobb
lenne, ha az ő oldalához szólítana, de mit tegyen az ember? Én
megértem Mária Lujzát is.
– Én nem, – felelte Franciska – nekem egy fél-életnél, a
megalkuvásnál, mindig kedvesebb lenne a halál.
– Minő nagy szavak, Madame. Vagy talán Mademoiselle?

You might also like