Send the Gift of Lifelong Learning!

How to Program: Computer Science Concepts and Python Exercises

Gifting Information

Frequently Asked Questions

With an eGift, you can instantly send a Great Course to a friend or loved one via email. It's simple:

Find the course you would like to eGift.

Under “Choose a Format,” click on Video Download or Audio Download.

Click ‘Send e-Gift’

Fill out the details on the next page. You will need the email address of your friend or family member.

Proceed with the checkout process as usual.

Once you have paid for your order, your friend or loved one will receive an email letting them know that they have a gift waiting for them at TheGreatCourses.com. That gift will be added to their My Digital Library when they log in and click to redeem it.

Why do I need to specify the email of the recipient?

We will send that person an email to notify them of your gift.

If they are already a customer, they will be able to add the gift to their My Digital Library and mobile apps.

If they are not yet a customer, we will help them set up a new account so they can enjoy their course in their My Digital Library or via our free mobile apps.

How will my friend or family member know they have a gift?

They will receive an email from The Great Courses notifying them of your eGift. The email will direct them to TheGreatCourses.com.

What if my friend or family member does not receive the email?

If the email notification is missing, first check their Spam folder. Depending on your email provider, it may have mistakenly been flagged as spam. If it is not found, please email customer service at (customerservice@thegreatcourses.com) or call 1-800-832-2412 for assistance.

How will I know they have received my eGift?

When the recipient clicks on their email and redeems their eGift, you will automatically receive an email notification.

I don’t want to send downloads. How do I gift DVDs or CDs?

eGifting only covers digital products. To purchase a DVD or CD version of a course and mail it to a friend, please call customer service at 1-800-832-2412 for assistance.

Oops! The recipient already owns the course I gifted. What now?

Great minds think alike! We can exchange the eGifted course for another course of equal value. Please call customer service at 1-800-832-2412 for assistance.

Can I select a date in the future to send my eGift?

Sorry, this feature is not available yet. We are working on adding it in the future.

What if the email associated with eGift is not for my regular Great Course account?

Please email customer service at (customerservice@thegreatcourses.com) or call our customer service team at 1-800-832-2412 for assistance. They have the ability to update the email address.

When purchasing a gift for someone, why do I have to create an account?

This is done for two reasons. One is so you can track the purchase of the order in your ‘order history’ section as well as being able to let our customer service team track your purchase and the person who received it if the need arises.

Can I return or Exchange a gift after I purchase it?

Because the gift is sent immediately, it cannot be returned or exchanged by the person giving the gift. The recipient can exchange the gift for another course of equal or lesser value, or pay the difference on a more expensive item

Frequently Asked Questions

With an eGift, you can instantly send a Great Course to a friend or loved one via email. It's simple:
1. Find the course you would like to eGift.
2. Under "Choose a Format", click on Video Download or Audio Download.
3. Click 'Send e-Gift'
4. Fill out the details on the next page. You will need to the email address of your friend or family member.
5. Proceed with the checkout process as usual.

Q: Why do I need to specify the email of the recipient?

A:
We will send that person an email to notify them of your gift. If they are already a customer, they will be able to add the gift to their My Digital Library and mobile apps. If they are not yet a customer, we will help them set up a new account so they can enjoy their course in their My Digital Library or via our free mobile apps.

Q: How will my friend or family member know they have a gift?

A:
They will receive an email from The Great Courses notifying them of your eGift. The email will direct them to TheGreatCourses.com. If they are already a customer, they will be able to add the gift to their My Digital Library and mobile apps. If they are not yet a customer, we will help them set up a new account so they can enjoy their course in their My Digital Library or via our free mobile apps.

Q: What if my friend or family member does not receive the email?

A:
If the email notification is missing, first check your Spam folder. Depending on your email provider, it may have mistakenly been flagged as spam. If it is not found, please email customer service at (customerservice@thegreatcourses.com) or call 1-800-832-2412 for assistance.

Q: How will I know they have received my eGift?

A:
When the recipient clicks on their email and redeems their eGift, you will automatically receive an email notification.

Q: What if I do not receive the notification that the eGift has been redeemed?

A:
If the email notification is missing, first check your Spam folder. Depending on your email provider, it may have mistakenly been flagged as spam. If it is not found, please email customer service at (customerservice@thegreatcourses.com) or call customer service at 1-800-832-2412 for assistance.

Q: I don't want to send downloads. How do I gift DVDs or CDs?

A:
eGifting only covers digital products. To purchase a DVD or CD version of a course and mail it to a friend, please call customer service at 1-800-832-2412 for assistance.

Q: Oops! The recipient already owns the course I gifted. What now?

A:
Great minds think alike! We can exchange the eGifted course for another course of equal value. Please call customer service at 1-800-832-2412 for assistance.

Q: Can I update or change my email address?

A:
Yes, you can. Go to My Account to change your email address.

Q: Can I select a date in the future to send my eGift?

A:
Sorry, this feature is not available yet. We are working on adding it in the future.

Q: What if the email associated with eGift is not for my regular Great Course account?

A:
Please please email customer service at (customerservice@thegreatcourses.com) or call our customer service team at 1-800-832-2412 for assistance. They have the ability to update the email address so you can put in your correct account.

Q: When purchasing a gift for someone, why do I have to create an account?

A:
This is done for two reasons. One is so you can track the purchase of the order in your ‘order history’ section as well as being able to let our customer service team track your purchase and the person who received it if the need arises.

Q: Can I return or Exchange a gift after I purchase it?

A:
Because the gift is sent immediately, it cannot be returned or exchanged by the person giving the gift. The recipient can exchange the gift for another course of equal or lesser value, or pay the difference on a more expensive item

What are priority codes?

Priority Codes are on the back of the catalog, mail promotion, or within an advertisement. To ensure that the pricing on the website is the same as what is in your catalog or advertisement, please enter the priority code provided.

What are priority codes?

Priority Codes are on the back of the catalog, mail promotion, or within an advertisement. To ensure that the pricing on the website is the same as what is in your catalog or advertisement, please enter the priority code provided.

Course Overview

Learning a new language opens a wealth of opportunities. But there’s one language family that provides benefits like no other: the languages of computer programming. Now widely taught in schools—even in elementary schools—programming is an eminently learnable skill that gives you unrivalled problem-solving power you can apply in all areas of life. Programming is also a fun, creative activity that imparts deep insights into how we control the devices that influence virtually every aspect of our lives.

Writing computer code has truly gone mainstream in recent years. Simple, general-purpose computer languages that resemble English can be readily used by anyone, thanks to fundamental building blocks that allow even complete beginners to write short pieces of working code, while also taking the mystery and complexity out of more complicated scripts. Remarkable advances in hardware and in user interfaces mean that skills that were once highly technical, complicated, and difficult to learn are today within the reach of everyone who is willing to engage with a computer.

And now a pathbreaking guide is available with How to Program: Computer Science Concepts and Python Exercises. These 24 engaging and information-rich half-hour lessons use one of the world’s most accessible, popular, and powerful computer languages, Python 3, as a gateway to the universe of programming. Taught by Professor John Keyser of the Department of Computer Science and Engineering at Texas A&M University, one of the top-ranked computer science programs in the country, this unique video course offers the following advantages:

From the very first lesson, Professor Keyser plunges you into Python coding and the concepts of computer science, with a friendly and accessible style that has won him numerous teaching awards.

The Python computer language (named after the comedy troupe Monty Python) is ideal for beginners, with code based on ordinary English words and the flexibility to create many useful and creative programs.

The course covers fundamental ideas with clarity and depth, teaching you programming from the most basic commands to the techniques that help you develop ambitious pieces of software.

Professor Keyser focuses on practical problem-solving, presenting dozens of real-life examples and exercises, walking you through solutions, and helping you practice and build your skills.

Following some of the lessons, Professor Keyser leads you through supplementary problems that reinforce key programming strategies. In addition, the guidebook that accompanies the course features dozens of additional drills and practice exercises, always with answers, together with a reference section that includes definitions of computer science terms, important Python commands, and other useful information. No matter what level of experience and skill you have with computers, you can rest assured that this course will suit your needs from the first step: walking you through how to install Python 3 and the programming editor PyCharm, both of which are available free online.

Programming Made Crystal Clear

Assuming no prior background in computer science, Professor Keyser’s lessons are so clear, carefully paced, and comprehensive that they will appeal to both novice and experienced programmers. Even those who use Python often will learn new and useful tips that fill gaps in their understanding, clarify concepts that were previously obscure, and broaden one-task tricks into versatile tools. As a result, this course is perfect for

beginners and students—from teenagers to retirees—who have never written a line of code;

self-taught programmers who want to deepen their knowledge of program design and make their code more efficient and elegant;

programmers new to Python, and Python users who want to upgrade their skills to the newest version of Python and more effectively exploit its many features;

professionals at any stage of their career who recognize the benefits of better understanding the technology that modern businesses rely on;

anyone wanting a fascinating insider’s perspective on how to think about all the ways we tell

those who never dreamed that coding could be as exciting, intellectually stimulating, and rewarding as it truly is.

Build Your Programming Fluency

There are numerous programming tutorials and videos available online, but they are generally brief or narrow, giving you only specific and specialized instructions without context. How to Program is a college-level course with more than a semester’s worth of material explored over 12 hours of lessons that you can pause, practice, and watch again as you hone your skills, guided by an expert teacher. And while you can find snippets of pre-written Python code online that may or may not work for your needs, this course takes you from writing individual lines of code to designing and thinking about code like a programmer, teaching you broadly applicable rules and tools that you use to create your own custom-made programs.

Professor Keyser begins with the basic code commands, and you start programming with him right away. In Lesson 1, you write a one-line program knowing just one command! You quickly build from there, mastering core principles and tools, including operators and variables, conditionals and loops, strings and files, functions, modules, packages, and more. By the end of the first half of the course, you will have tried out all of the most important fundamentals of programming.

The first half of the course provides the foundation of programming, while the second half of the course explores a wider range of applications and deeper principles, both of which also help you further consolidate your understanding of programming fundamentals. Applications include the coding behind games and graphics, as well as teaching you how to analyze sports statistics, simulate a retirement fund, and direct the path of a simple robot. Along the way, you get a feel for when to use a top-down design or a bottom-up strategy. You discover the power of object-oriented programming and the trade-offs of sequential programming versus event-driven programming. And you see for yourself how data structures and algorithms make possible even more powerful programs. Best of all, these and many other concepts become second nature as your programming fluency grows.

Discover a New World in Coding

“I got hooked writing my first simple computer program back in third grade,” recalls Professor Keyser. This course will show you how fun, creative, and empowering programming can be. Professor Keyser’s approach is clear, practical, and engaging—it’s easy to see why his teaching has been honored so many times. Throughout the course, he offers tips on how to be a better programmer, hard-won lessons from decades of coding, and reflections on the aspects of programming that are most rewarding:

Practical: Often it’s faster to write a program to perform a task, such as repeated calculations or opening two applications in tandem, than it is to track down an existing piece of software that does exactly what you need. And as your coding skill grows, you’ll find that you are creating unique programs that other people need.

Exhilarating: Figuring out how to apply the tools to solve each programming problem is a unique challenge, a puzzle that often has several solutions—but which is fastest, simplest, most efficient? Even debugging offers new and exciting mysteries to solve. When the pieces finally fall into place, you get a wonderful feeling of accomplishment that a mental model has been turned into working software.

Creative: Programming lets you express your creativity, allowing you to implement your ideas in code. And just as there is never simply one way to express a thought in a language, there are usually many ways to get a program to do what you want. A good design sense will point you to the optimum solution for your particular problem.

Transformational: Programming transforms the way you think, training you to look at problems logically, develop plans that can be followed sequentially, and recognize how to break down a complex task into more manageable pieces. All of these are useful approaches in areas outside of computing.

So, as with any new language, programming opens up a new world, while also influencing the way you look at your old, familiar world. It may be that as you work through the enjoyable and challenging exercises in How to Program, the most important benefit you are gaining is not only a toolkit to help you create your own programs in Python 3—it’s also a set of enhanced mental tools for every sphere of life.

Hide Full Description

24 lectures

| Average 31 minutes each

1

What Is Programming? Why Python?

Hello, World!" Following tradition, write a program that produces this greeting as your first exercise in coding a computer program. Learn why Python is the ideal computer language for beginners and many others. After this lesson, follow the onscreen instructions for installing Python and the programming editor PyCharm." x

2

Variables: Operations and Input/Output

Study some of the basic operations of computers. First, investigate the memory hierarchy and what the CPU does. Then consider variables, which are like boxes where units of data are stored in a program. Look at simple arithmetic operations with variables, and try input/output commands. x

3

Conditionals and Boolean Expressions

Any time a computer takes different paths depending on your response, there is usually a conditional statement involved. Delve into these widely used tools, looking at branching points, comparisons, if/then statements, nesting conditionals, and Boolean (true/false) expressions. x

4

Basic Program Development and Testing

Take the plunge and write a program that's useful for saving money! In the process, learn the importance of planning ahead, testing often, and building your code incrementally. As your program takes shape, Professor Keyser describes instructive incidents from computer history and his own experience. x

5

Loops and Iterations

One of the biggest thrills from writing code comes from getting a computer to perform a sequence of instructions repeatedly until a task is complete. Discover the ease of writing such loop programs and also the peril of getting stuck in infinite loops. Investigate while loops, for loops, and iterations. x

6

Files and Strings

Learn the fundamentals of files: what they are, how they're named, and how to interact with them. Typically, the file format that you write to and read from will be one long string-a sequence of alphanumeric characters. See how these differ from binary files such as images, which are composed of 1s and 0s. x

7

Operations with Lists

Python makes it very easy to create lists and perform a wide range of operations on them. Learn the fundamentals of building lists. Then experiment with indexing into lists, looping over lists, and making slices of lists, lists of lists, and list-like structures called tuples. x

8

Top-Down Design of a Data Analysis Program

Take what you have learned about lists, loops, files, and other techniques and design a program that lets you analyze weather data. Sound daunting? Discover the trick of top-down design, which breaks a complex task into manageable parts and is applicable not just to coding but to any major project. x

9

Functions and Abstraction

One of the key ideas in computer science is abstraction-using simple interfaces to manage complex procedures. See how functions can simplify away the details of complex process, freeing attention to focus on what goes into a function and what comes out. Learn when to use functions and the side effects that sometimes occur. x

10

Parameter Passing, Scope, and Mutable Data

Complete your introduction to elementary programming by looking at parameters-the major technique for passing information through functions. Learn when a parameter or variable is in scope," how to work with list data that can change when passed as a parameter, and what it means for parameters to have default values." x

11

Error Types, Systematic Debugging, Exceptions

Confront the nemesis of all computer programmers: bugs. First, look into the history of this peculiar term. Then take a systematic approach to solving mysterious glitches in your own programs. Get acquainted with the debugger in PyCharm, and explore strategies for tracking down bugs and fixing them. x

12

Python Standard Library, Modules, Packages

Discover the remarkable programming tools called modules that you have at your fingertips with Python. Modules are ready-made programs that can be imported into your code as you write it, enhancing your creativity, expanding your options, and saving you time. Bundles of modules are called packages. x

13

Game Design with Functions

Use the knowledge you've gained so far to design a grid-based matching game-an entertaining way to practice top-down development of more complex programs using functions. You'll see how rough-and-ready lines of code known as stubs come in very handy as you tackle such projects. x

14

Bottom-Up Design, Turtle Graphics, Robotics

Now experiment with bottom-up design, an approach that starts with the available elements and builds from there. Utilize a Python module called turtle graphics to model robot motion, relying on the basic turtle commands: forward, backward, and turn left or right by an angle you specify. x

15

Event-Driven Programming

Explore the visual style of programming seen on the web and in the graphical user interface of an operating system. Get started with pyglet, a Python package created to help support development of games and other audio-visual environments. Use pyglet to make a graphical version of the game from Lesson 13. x

16

Visualizing Data and Creating Simulations

Delve into data visualization and simulations-two areas where computers have had a revolutionary but under-recognized impact. Learn how to do both with matplotlib, a Python package for creating plots, graphs, and charts. Use it to design a financial simulation that can help you plan your retirement. x

17

Classes and Object-Oriented Programming

Learn about an exciting approach to programming called object-oriented design, which bundles functions together with data into a series of objects, whose tools and properties can be defined in a single class. Try your hand at this powerful technique by constructing a bank account program. x

18

Objects with Inheritance and Polymorphism

Dig deeper into object-oriented design, seeing how encapsulation-combining data and the functions that deal with data into a single package-is the basis for two other object-oriented features: inheritance and polymorphism. Apply these ideas to sports statistics. x

19

Data Structures: Stack, Queue, Dictionary, Set

Data structures allow you to perform operations more effectively. Start with two of the most basic data structures, stacks and queues, discovering that both can be executed using lists. Then move to non-linear data structures, exemplified by dictionaries and sets, which can be implemented using a hash table. x

20

Algorithms: Searching and Sorting

Enter the realm of algorithms, the heart of computer science. See how a well-designed algorithm-a general set of steps that accomplish a task-allows you to work out the logic of a program before you commit it to code. Try this with search and sort exercises. x

21

Recursion and Running Times

Expand your study of algorithms to cover recursion, one of the most fascinating ideas in computer science. Apply recursion to form a pair of sorting algorithms. Then see how another approach, iteration, excels at tasks that take too long with recursion, such as calculating the Fibonacci sequence. x

22

Graphs and Trees

In computing, a graph is a mathematical structure composed of vertices and edges. Discover its incredible power to capture relationships such as the airline routes between cities and the friends in a social network. Try writing programs utilizing graphs and a special type of graph called trees. x

23

Graph Search and a Word Game

Examine a famous graph algorithm called breadth-first search, which shows the shortest path connecting nodes in a tree. Use this technique to write a program creating an entertaining game, in which a word is transformed one letter at a time, with each new iteration required to be a valid word. x

24

Parallel Computing Is Here

One of the major trends in the present and future of computing is parallel processing. Put this clever technique to work in Python. Then close the course with Professor Keyser's suggestions for your further explorations of programming, along with his reflections on the personal benefits of this remarkable human achievement. x

Lecture Titles

Clone Content from Your Professor tab

What's Included

What Does Each Format Include?

Video Download Includes:

Download 24 video lectures to your computer or mobile app

Downloadable PDF of the course guidebook

FREE video streaming of the course from our website and mobile apps

Audio Download Includes:

Download 24 audio lectures to your computer or mobile app

Downloadable PDF of the course guidebook

FREE audio streaming of the course from our website and mobile apps

DVD Includes:

24 lectures on 4 DVDs

314-page printed course guidebook

Downloadable PDF of the course guidebook

FREE video streaming of the course from our website and mobile apps

Closed captioning available

What Does The Course Guidebook Include?

Course Guidebook Details:

314-page printed course guidebook

Suggested Reading

Exercises and answers

A guide to Python commands

Enjoy This Course On-the-Go with Our Mobile Apps!*

iPhone + iPad

Android Devices

Kindle Fire Tablet + Firephone

*Courses can be streamed from anywhere you
have an internet connection. Standard carrier data rates may apply in areas that do not have wifi connections
pursuant to your carrier contract.

Your professor

About Your Professor

John Keyser, Ph.D.

Texas A&M University

Dr. John Keyser is a Professor and the Associate Department Head for Academics in the Department of Computer Science and Engineering at Texas A&M University, where he has taught since earning his Ph.D. in Computer Science from the University of North Carolina. As an undergraduate, he earned three bachelor’s degrees—in Computer Science, Engineering Physics, and Applied Math—from Abilene Christian University.
Dr....

Reviews

How to Program: Computer Science Concepts and Python Exercises is rated
3.9 out of
5 by
118.

Rated 5 out of
5 by
SalviV from
Great TrainingGood training material. Not for beginners, more for someone with some knowledge of programming. Took sometime to figure out how PyCharm works.

Date published: 2019-02-06

Rated 5 out of
5 by
Gene B from
Outstanding educational tool.I'm at lesson 18 of 24. But I keep going back to the earlier lessons because there are so many little details Prof. Keyser mentions that I didn't fully appreciate until I was working on the more complicated exercises.
The Prof. is clear, precise, and efficient in his presentation. The graphics are generally in a consistent format throughout the course, which is a big help.
I'm retired from many years of working in Fortran, Visual Basic, SAP and lots more. So I'm looking at Python from the point of view of how it makes it easier (and more fun!) to do things I was often doing in the earlier languages.
Also catching up on object-oriented, which Prof. Keyser delivers with remarkable clarity.
I don't like to dismiss the problems many of the reviewers reported, because I might be more tolerant than someone new to coding. But honestly, it only took me an hour or so to get Python and PyCharm up and running on my Windows 10 laptop. Both work perfectly. And both are incredibly loaded with features, so this isn't something anyone is going to fully learn in a weekend.
The "typos"? Yeah i found a few. But nothing that affects the terrific usefulness and fun of taking this course. It's worth a thousand times what I paid.

Date published: 2019-02-05

Rated 5 out of
5 by
Burrhead52 from
Keep them comingI got this course about 3 weeks ago. Every minute of it was good. I truly learned a lot that books and YouTube videos cannot teach. Professor Keyser has an effective teaching style that is engaging. I would recommend this course to anyone that wants to learn programming from the ground up. If you stop the video and work his examples until you understand you will have some skills at the end of the series. I do nothing close to programming for a living but enjoy it like a hobby. Python is the way to go. I binge watched this like Game of Thrones. Can he do a series on web serving with Python?

Date published: 2019-01-31

Rated 4 out of
5 by
Joe1674 from
Enjoyable courseVery happy with the format and video instructor. A great pace to learn and the lectures are the perfect length to retain the information that was presented. I would like to see some "homework" assignments so that the student can practice what was taught is the lessons

Date published: 2019-01-27

Rated 5 out of
5 by
Sensor from
Great Introduction to programming in PythinThis an intro to Python; you will not become an expert by just watching. Programming like algebra requires blood, sweat and cursing--- but when you see the results the effort is worth.
This course will touch on the high of top down, bottom up and object oriented programming. You will need additional resources to become an effective Python programmer; many of these are available online for free on various websites. The concepts presented are well done. There is a lot of information here but it is only 12 hours. Examples are presented clearly. I have been streaming the course and the programming examples are not as clear as they could be. I just looked at the DVDs and they are much easier to read.
You could consider Python as the current BASIC with lots of features and fairly easy to program. It is platform independent; the compiler and IDE are available free to download.

Date published: 2019-01-27

Rated 5 out of
5 by
Friar Tuck from
Very good Course!I'm only part of the way through this course, and I'm learning! I'm 77 years old, and still learning!
This course seems well laid out, and the instructor is very clear and easy to understand. The examples are understandable as well, with every day implications that are easy to grasp.
I do have some prior background in computers, retired from 30 years in the IT industry, but I never really got into programming.
I'm enjoying this!

Date published: 2019-01-20

Rated 1 out of
5 by
Clifton Lewis from
customer service is nonexistentI bought this and could not figure out how to download, put in a ticket and still no answer after 2 weeks. Not a happy camper.

Date published: 2019-01-14

Rated 4 out of
5 by
Hutch from
I am very happy with the knowledge I am gaining from this course. I want to get into data science and this gives me an edge!!!