France leads the pack for generative AI funding in Europe | TechCrunch
(Wednesday, June 19, 2024) “Like it or hate it, artificial intelligence — especially generative AI — is the technology story of 2024. OpenAI, with its rollouts of viral services like”
Generative AI Can’t Cite Its Sources
(Wednesday, June 26, 2024) “How will OpenAI keep its promise to media companies?”
Illia Polosukhin On Inventing The Tech Behind Generative AI At Google
(Thursday, June 27, 2024) “Illia Polosukhin is one of the “Transformer 8,” a group that many call the founding fathers of generative AI. They co-wrote a paper at Google in 2017 that es…”
How generative AI could reinvent what it means to play
“AI-powered NPCs that don’t need a script could make games—and other worlds—deeply immersive.”
Cornell transforms generative AI education and clones a faculty member | Cornell Chronicle
“Designing and Building AI Solutions is a new online certificate program, with one-of-a-kind features designed to enhance the learning experience for those that desire to build their own AI products—no coding required.”
Share this:
Data science in my book Dancing with Python
In my blog entry “Quantum computing in my book Dancing with Python,” I covered what my book covers related to quantum computing. I also published the entry “Availability of my book Dancing with Python and its table of contents.”
Today, I want to specifically list what I discuss in the book in what I term “an extended definition of data science.” The core chapters are in Part III. Here are their titles, introductions, and chapter tables of contents:
III Advanced Features and Libraries
12 Searching and Changing Text
We represent much of the world’s information as text. Think of all the words in all the digital newspapers, e-books, PDF files, blogs, emails, texts, and social media services such as Twitter and Facebook. Given a block of text, how do we search it to see if some desired information is present? How can we change the text to add formatting or corrections or extract information?
Chapter 4, Stringing You Along, covered Python’s functions and methods. This chapter begins with regular expressions and then proceeds to natural language processing (NLP) basics: how to go from a string of text to some of the meaning contained therein.
12.1 Core string search and replace methods
12.2 Regular expressions
12.3 Introduction to Natural Language Processing
12.4 Summary
13 Creating Plots and Charts
Among mathematicians and computer scientists, it’s said that a picture is worth 210 words. Okay, that’s a bad joke, but it’s one thing to manipulate and compute with data, but quite another to create stunning visualizations that convey useful information.
While there are many ways of building images and charts, Matplotlib is the most widely used Python library for doing so. [MAT] Matplotlib is very flexible and can produce high-quality output for print or digital media. It also has great support for a wide variety of backends
that give you powerful mouse-driven interactivity. Generally speaking, if you have a coding project and you need to visualize numeric information, see if Matplotlib already does what you want. This chapter covers the core functionality of this essential library.
13.1 Function plots
13.2 Bar charts
13.3 Histograms
13.4 Pie charts
13.5 Scatter plots
13.6 Moving to three dimensions
13.7 Summary
14 Analyzing Data
While we can use fancy names like “data science,” “analytics,” and “artificial intelligence” to talk about working with data, sometimes you just want to read, write, and process files containing many rows and columns of information. People have been doing this interactively for years, typically using applications like Microsoft Excel® and online apps like Google Sheets™.
To “programmatically” manipulate data, I mean that we use Python functions and methods. This chapter uses the popular pandas library to create and manipulate these collections of rows and columns, called DataFrames. [PAN] [PCB] We will later introduce other methods in Chapter 15, Learning, Briefly. Before we discuss DataFrames, let’s review some core ideas from statistics.
14.1 Statistics
14.2 Cats and commas
14.3 pandas DataFrames
14.4 Data cleaning
14.5 Statistics with pandas
14.6 Converting categorical data
14.7 Cats by gender in each locality
14.8 Are all tortoiseshell cats female?
14.9 Cats in trees and circles
14.10 Summary
15 Learning, Briefly
Machine learning is not new, but it and its sub-discipline, deep learning, are now being used extensively for many applications in artificial intelligence (AI). There are hundreds of academic and practical coding books about machine learning.
This final chapter introduces machine learning and neural networks primarily through the scikit-learn sklearn module. Consider this a jumping-off point where you can use the Python features you’ve learned in this book to go more deeply into these essential AI areas if they interest you.
15.1 What is machine learning?
15.2 Cats again
15.3 Feature scaling
15.4 Feature selection and reduction
15.5 Clustering
15.6 Classification
15.7 Linear regression
15.8 Concepts of neural networks
15.9 Quantum machine learning
15.10 Summary
This book is an introduction, so my goal is to get you started on a broad range of topics. For example, here are the Python modules and packages discussed or used in each of the four chapters in Part III:
12 Searching and Changing Text: re, flashtext, spacy
13 Creating Plots and Charts: matplotlib, numpy, mpl_toolkits.mplot3d
14 Analyzing Data: pandas, numpy, matplotlib, squarify, matplotlib-venn
15 Learning, Briefly: sklearn, pandas, numpy
I mention in passing in the book several other packages, such as pytorch, as pointers for further exploration. I did not include in the list above standard modules such as math, random, and sys.
Share this:
Quantum computing in my book Dancing with Python
My new book, Dancing with Python: Learn Python software development from scratch and get started with quantum computing, is now available from Amazon and other sources, and I recently posted the full table of contents. Though it is an introduction to Python, albeit with discussions of several advanced modules, it provides a unified approach with quantum computing.
My approach is described in the Preface:
How do you learn to code in this new world that involves both classical and quantum hardware?
One way to do it is to learn classical computing by itself. This is the traditional way of doing it, using a language such as C, C++, JavaScript, Java, Go, or Python. Along the way, you would learn how to use extra functionality in libraries of code along with the programming tools or from a third-party provider. Examples of these are the C++ Standard Library; the Java Platform, Enterprise Edition; the Python Standard Library; or the thousands of Python packages listed in the Python Package Index.
Once you have the philosophy, syntax, structure, and idioms of the classical programming language understood, you then learn quantum computing on top of that. For example, you could use the Qiskit open source quantum computing software development kit (SDK) along with Python. These mesh together and operate exceptionally well. Thousands of people are already Qiskit coders. If you know Python, this is a great approach.
But what if you are learning to code or have only a small amount of experience? What if I could offer you the chance to learn classical and quantum computing in a unified manner? Would it be useful if I could help you understand the concepts of both so that you don’t see them as different disciplines? That’s what I do in this book.
I talk about aspects of quantum computing throughout the book and in many places I provide pointers to sections in my quantum computing book Dancing with Qubits. That book is not a prerequisite for Dancing with Python, but the referenced sections will help you learn more about the topics if you wish to go deeper.
I first talk about qubits, “quantum bits”, in section 1.11. The main chapters that discuss quantum computing are 9 and 11:
9 Understanding Gates and Circuits
Classical computers use logical gates to manipulate bits. Using them, we assemble circuits to implement more complicated processes like addition and multiplication. Eventually, we get all the software that runs on computers everywhere.
Quantum computers use qubits to significantly extend the power of bits, as we saw in section 1.11. We assemble these into quantum circuits to implement algorithms.
There is a strong connection between classical and quantum computing, and a quantum computing system is a classical computing system extended with one or more quantum devices. These devices are the physical implementations of qubits and the software and hardware that control them.
This chapter examines bits and qubits, gates that operate upon them, and how we assemble them into circuits.
9.1 The software stack
9.2 Boolean operations and bit logic gates
9.3 Logic circuits
9.4 Simplifying bit expressions
9.5 Universality for bit gates
9.6 Quantum gates and operations
9.7 Quantum circuits
9.8 Universality for quantum gates
9.9 Summary
11 Searching for the Quantum Improvement
By considering new approaches and getting clever, we can develop classical algorithms that are faster than you might have expected. Using quantum techniques, we can go a step further: perform some operations faster than seems possible.
This chapter compares classical and quantum search techniques to see how extending our basic information unit from the bit to the qubit can show remarkable improvements. Note that I only discuss mainstream “universal” quantum computing and not limited-purpose systems that perform operations like simulated annealing.
11.1 Classical searching
11.2 Quantum searching via Grover
11.3 Oracles
11.4 Inversion about the mean
11.5 Amplitude amplification
11.6 Searching over two qubits
11.7 Summary
If you wish to learn more about quantum computing after reading this book, I suggest you look at
- my Dancing with Qubits book
- Robert Loredo’s Learn Quantum Computing with Python and IBM Quantum Experience: A hands-on introduction to quantum computing and writing your own quantum programs with Python
- the online Qiskit Textbook
Share this:
Availability of my book Dancing with Python and its table of contents
My new book Dancing with Python: Learn Python software development from scratch and get started with quantum computing is now available for purchase from Amazon and Packt Publishing.
Develop skills in Python by implementing exciting algorithms, including mathematical functions, classical searching, data analysis, plotting data, machine learning techniques, and quantum circuits.
Key Features
Learn Python basics to write elegant and efficient code
Create quantum circuits and algorithms using Qiskit and run them on quantum computing hardware and simulators
Delve into Python’s advanced features, including machine learning, analyzing data, and searching
Contributors
About the author
About the reviewer
Contents
List of Figures
Preface
Why did I write this book?
For whom did I write this book?
What does this book cover?
What conventions do I use in this book?
Get in touch
1 Doing the Things That Coders Do
1.1 Data
1.2 Expressions
1.3 Functions
1.4 Libraries
1.5 Collections
1.6 Conditional processing
1.7 Loops
1.8 Exceptions
1.9 Records
10 Contents
1.10 Objects and classes
1.11 Qubits
1.12 Circuits
1.13 Summary
I Getting to Know Python
2 Working with Expressions
2.1 Numbers
2.2 Strings
2.3 Lists
2.4 Variables and assignment
2.5 True and False
2.6 Arithmetic
2.7 String operations
2.8 List operations
2.9 Printing
2.10 Conditionals
2.11 Loops
2.12 Functions
2.13 Summary
3 Collecting Things Together
3.1 The big three
3.2 Lists
3.3 The joy of O(1)
3.4 Tuples
3.5 Comprehensions
3.6 What does “Pythonic” mean?
3.7 Nested comprehensions
3.8 Parallel traverse
3.9 Dictionaries
3.10 Sets
3.11 Summary
4 Stringing You Along
4.1 Single, double, and triple quotes
4.2 Testing for substrings
4.3 Accessing characters
4.4 Creating strings
4.5 Strings and iterations
4.6 Strings and slicing
4.7 String tests
4.8 Splitting and stripping
4.9 Summary
5 Computing and Calculating
5.1 Using Python modules
5.2 Integers
5.3 Floating-point numbers
5.4 Rational numbers
5.5 Complex numbers
5.6 Symbolic computation
5.7 Random numbers
5.8 Quantum randomness
5.9 Summary
6 Defining and Using Functions
6.1 The basic form
6.2 Parameters and arguments
6.3 Naming conventions
6.4 Return values
6.5 Keyword arguments
6.6 Default argument values
6.7 Formatting conventions
6.8 Nested functions
6.9 Variable scope
6.10 Functions are objects
6.11 Anonymous functions
6.12 Recursion
6.13 Summary
7 Organizing Objects into Classes
7.1 Objects
7.2 Classes, methods, and variables
7.3 Object representation
7.4 Magic methods
7.5 Attributes and properties
7.6 Naming conventions and encapsulation
7.7 Commenting Python code
7.8 Documenting Python code
7.9 Enumerations
7.10 More polynomial magic
7.11 Class variables
7.12 Class and static methods
7.13 Inheritance
7.14 Iterators
7.15 Generators
7.16 Objects in collections
7.17 Creating modules
7.18 Summary
8 Working with Files
8.1 Paths and the file system
8.2 Moving around the file system
8.3 Creating and removing directories
8.4 Lists of files and folders
8.5 Names and locations
8.6 Types of files
8.7 Reading and writing files
8.8 Saving and restoring data
8.9 Summary
II Algorithms and Circuits
9 Understanding Gates and Circuits
9.1 The software stack
9.2 Boolean operations and bit logic gates
9.3 Logic circuits
9.4 Simplifying bit expressions
9.5 Universality for bit gates
9.6 Quantum gates and operations
9.7 Quantum circuits
9.8 Universality for quantum gates
9.9 Summary
10 Optimizing and Testing Your Code
10.1 Testing your code
10.2 Timing how long your code takes to run
10.3 Optimizing your code
10.4 Looking for orphan code
10.5 Defining and using decorators
10.6 Summary
11 Searching for the Quantum Improvement
11.1 Classical searching
11.2 Quantum searching via Grover
11.3 Oracles
11.4 Inversion about the mean
11.5 Amplitude amplification
11.6 Searching over two qubits
11.7 Summary
III Advanced Features and Libraries
12 Searching and Changing Text
12.1 Core string search and replace methods
12.2 Regular expressions
12.3 Introduction to Natural Language Processing
12.4 Summary
13 Creating Plots and Charts
13.1 Function plots
13.2 Bar charts
13.3 Histograms
13.4 Pie charts
13.5 Scatter plots
13.6 Moving to three dimensions
13.7 Summary
14 Analyzing Data
14.1 Statistics
14.2 Cats and commas
14.3 pandas DataFrames
14.4 Data cleaning
14.5 Statistics with pandas
14.6 Converting categorical data
14.7 Cats by gender in each locality
14.8 Are all tortoiseshell cats female?
14.9 Cats in trees and circles
14.10 Summary
15 Learning, Briefly
15.1 What is machine learning?
15.2 Cats again
15.3 Feature scaling
15.4 Feature selection and reduction
15.5 Clustering
15.6 Classification
15.7 Linear regression
15.8 Concepts of neural networks
15.9 Quantum machine learning
15.10 Summary
Appendices
A Tools
A.1 The operating system command line
A.2 Installing Python
A.3 Installing Python modules and packages
A.4 Installing a virtual environment
A.5 Installing the Python packages used in this book
A.6 The Python interpreter
A.7 IDLE
A.8 Visual Studio Code
A.9 Jupyter notebooks
A.10 Installing and setting up Qiskit
A.11 The IBM Quantum Composer and Lab
A.12 Linting
B Staying Current
B.1 python.org
B.2 qiskit.org
B.3 Python expert sites
B.4 Asking questions and getting answers
C The Complete UniPoly Class
D The Complete Guitar Class Hierarchy
E Notices
E.1 Photos, images, and diagrams
E.2 Data
E.3 Trademarks
E.4 Python 3 license
F Production Notes
References
Other Books You May Enjoy
Index
Index Formatting Examples
Python function, method, and property index
Python class index
Python module and package index
General index
Share this:
My Visual Studio Code configuration
People occasionally ask me about the tools I use for writing and coding. Visual Studio Code is my editor of choice, and it’s the best I’ve ever used. I change visual themes every few months to see if there is one I like better than the last. My current theme is Dark+ Material.
I use about 30 extensions for Python, HTML, CSS, Markdown, and LaTeX, plus a few others for general editing.
Share this:
My Visual Studio Code extensions for LaTeX and Python
I’m in the final stages of writing a book about quantum computing using LaTeX and I also do a lot of Python programming when I get a chance. A couple of years ago, I decided to try using the Visual Studio Code editor and I just love it. I’ve used dozens of programming editors in my life (vi, not emacs, thank you very much), and VSCode has the best functionality of all of them.
One of its best features is its extension architecture. Though I experiment with various extensions occasionally, I keep a core set. If I am going to so something special such as editing Markdown text, I will use an extra extension or two until I am done with the task and then uninstall them.
These are the extensions I use now for LaTeX editing and Python coding. They are all available in the editor through the Marketplace.
- Blank Line Organizer – removes extraneous extra lines that creep into text while editing
- Bookmarks – as you would suspect, allows you to set a bookmark somewhere in a file and then jump back to it quickly
- Bracket Pair Colorizer 2 – paints matching parentheses, brackets, and curly brackets in the same color. I’ve tried the original and Rainbow Brackets, and none of these three are perfect. These version is the fastest and mostly best.
- change-case – provides many options for changing the case (e.g., uppercase, lowercase, sentence case) of selected text
- Code Runner – helps execute code in the environment
- Code Spell Checker – tells you when a word has questionable spelling, though not good on suggesting alternatives. You can put comments in the file saying which words to ignore or store them in a file in the folder.
- LaTeX Workshop – the workhorse large set of code to assist in editing LaTeX markup. I don’t use all the features and I still run things like pdflatex from the command line, but it is hugely helpful. As an aside, you probably want to get latexindent running on your machine if possible.
- latex-count – simple add-on that shows how many non-markup words are in your document
- MagicPython – syntax highlighter for Python
- Python – the main set of code providing Python editing and execution
- qiskit-vscode – editing and execution support for the open source Qiskit quantum computing development platform
- Rewrap – rewraps lines of text. Useful when LaTeX content gets too ragged.
- Settings Sync – saves your editor setting on GitHub so you can have the same environment across machines.
Share this:
Recap: NanoDays with a Quantum Leap at the Museum of Science, Boston
It was a beautiful spring day in Boston last Saturday, April 6, when my IBM Q colleague Melissa Turesky and I headed to the Museum of Science on the Charles River. It was a special event, “NanoDays with a Quantum Leap,” and I spoke about the IBM Q quantum computing program and how people could start coding it today.
I was most happy to see how many young people were at the museum and participating in the NanoDays events. A lot of what we are doing now with quantum computing is education and I hope that exhibits like this will encourage girls and boys to learn more about the area. I’d love to have someone tell me in 10 years that the museum exhibit inspired them to pursue a quantum-related STEM career.
Since 2016, over 100,000 people have used the IBM Q Experience and they have run over 9.5M executions. A 50 qubit model of the IBM Q System One will be in residence as part of the quantum exhibit until the end of May.