Learn to Program with Alice
4.5 (4 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
34 students enrolled
Wishlisted Wishlist

Please confirm that you want to add Learn to Program with Alice to your Wishlist.

Add to Wishlist

Learn to Program with Alice

Learn how to get started with programming using specialized tool designed to make programming approachable and fun.
4.5 (4 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
34 students enrolled
Created by Kevin Eaton
Last updated 6/2015
Current price: $10 Original price: $20 Discount: 50% off
1 day left at this price!
30-Day Money-Back Guarantee
  • 2 hours on-demand video
  • 1 Supplemental Resource
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
Have a coupon?
What Will I Learn?
Understand the basic concepts of programming
Combine basic programming fundamentals to make larger programs
Communicate pros and cons of various programming constructs
View Curriculum
  • Students will need a PC, Mac, or Linux computer with Java and the ability to download the Alice programming environment

In this course, we introduce the basics of computer programming using the visual animation environment known as Alice. Alice is a free software package that allows students to quickly dive in to programming concepts in a visual interface that provides a simple, intuitive, and fun experience. We do not expect the student to have any programming experience or knowledge prior to beginning the course. Students will begin their programming journey with a basic understanding of concepts such as Object, Methods, and Events. Students will then move on to learning about If Statements, Repetition, Parameters, and Functions. The concepts will be pulled together to create a simple game as a final project.

The course is taught in a hands-on approach, with demonstrations of the Alice programming fundamentals. Handouts of any presentations and a glossary of basic terms are included as supplements.

The pace of the course is designed for brand new learners interested in gaining a basic understanding of programming concepts. Taught by an industry leader and experienced instructor, this course aims to be approachable and fun. By the end of the course, the student should feel comfortable exploring new programming languages, confident they have a solid foundation of concepts.

Who is the target audience?
  • Absolute beginners or students with no experience programming
Students Who Viewed This Course Also Viewed
Curriculum For This Course
Expand All 25 Lectures Collapse All 25 Lectures 02:10:08
Getting Started with Alice
4 Lectures 17:04

So why should we use Alice to learn how to program? Simply put, it is easy, fun, and gets out of the way. In this lecture, we introduce the course and explain why we chose Alice for teaching new programmers the fundamentals.

Preview 10:16

Now that we understand the why of Alice, let's get started with the "how" and demonstrate how to install this program.


When learning any new skill or discipline, new vocabulary may sound complex or ambiguous. Don't worry, a basic introduction to some common terms is provided here. All of the terms will be explained in more depth throughout the course.

Basic Terms
3 pages

When first starting the Alice program, the layout may seem intimidating. Luckily, the sections of the program are easy to understand once explored.


This quiz will ask a few basic questions to test your knowledge of the introductory concepts.

Basic Concepts
5 questions
6 Lectures 27:38

Methods are how we give commands to our objects. In this lecture, we will demonstrate how to use the built in methods Alice provides.

Built In Methods

Sometimes, we need our animations and objects to perform different operations than what is provided by default. For that, we can build our own methods. This will also help us write more maintainable code.

Custom Methods

Of course, it would be a pain if we had to write our methods to do only one thing at a time without variance. Could imagine having a "Hop 2 meters", "Hop 4 meters", or "Hop 122 meters"? It would quickly become difficult. In this lecture, we explore Parameters, which lets us tweak our methods to our needs.


Alice will remind you to save every 15 minutes. This is a good practice to prevent lost work. In this lesson, we discuss how to save Alice, what the file type looks like, and how to reopen our saved worlds.


In this lecture, we explore creating our own methods on the world object, also known as world-level methods. This will allow us to share our methods between different objects.

World Level Methods

Continuing where we left off, we expand our knowledge of world level methods and then summarize our understanding of using methods to modularize our code.

World Level Methods Part 2

3 questions
Classes and Interactions
7 Lectures 40:27

What if we wanted to create multiple copies of a class with methods we created? In this lesson, we talk about inheritance and classes. Inheritance allows us to make another template for our classes so we can reuse the hard work we already created!


Stepwise refinement is the process of starting with a larger problem and breaking it down into smaller problems. In doing so, it is easier to manage and refine our code peice by piece.

Stepwise Refinement Presentation

In this lecture, we expand upon our conceptual understanding of stepwise refinement by starting with a larger problem and breaking it down.

Stepwise Refinement Demonstration

Events are the starting point for designing interactive applications. In this presentation, we explain the basic concepts of events before diving into writing our own event handlers.

Events Presentation

In this lecture, we write our code to respond to various events. This makes our animation feel more responsive and itneractive.

Events Demonstration

Sometimes, we need to know various details about our objects and their relationships to each other. In this lecture, we explore the basic concepts of Functions, which allow us to ask questions of our world and return data to our methods.

Functions Part 1

Continuing where we left off, we next move into our discussion of custom functions and how to do some basic math to return values useful for more realistic animations.

Functions Part 2

Classes, Events, and Functions
5 questions
Loops and Branching
7 Lectures 37:37

Often while programming we will want to repeat sections of our code or blocks of functionality. Sometimes we will know how many times we want our code to repeat and other times we will need to do checks as the code is running. In this lecture, we explain the basics of repetition structures within programming.

Loops Presentation

Taking our foundational knowledge, we next move on to explore both fixed-count loops and conditional loops.

Loops Demonstration

When we need to branch our code to do one of two separate logic paths, we need to use a conditional, also known as an If statement. Using a conditional allows us to choose, based upon some condition, what our animation should do.


Armed with our knowledge of loops, functions, and conditionals, we can now build a basic simulation. We will use a random number (probability) function to ask our scenes to behave differently each time the animation is run.


With a good understanding of the foundational concepts, it is time to build a simple guessing game!

Game Part 1

In this less, we continue improving our game using stepwise refinement.

Game Part 2

In this lesson, we wrap up our guessing game. We use the vehicle logic, custom functions, and looping structures to allow our game to reset and continue after each guess.

Game Part 3

Loops and Conditions
5 questions
1 Lecture 04:22

This is it! We've completed the material and you should have a better grasp of the fundamental programming concepts. This is just the first of many steps on the journey to learning to code. Your next step is up to you, but try to think of something fun! Python, Javascript, Ruby... the choices are plentiful!

About the Instructor
Kevin Eaton
4.5 Average rating
4 Reviews
34 Students
1 Course
Technology Expert, Entrepreneur, and Professional Instructor

I am an experienced technology professional with experience primarily focused on open source technologies. I have managed large teams of highly talented cross-functional team members using agile methodologies. I have been a founding member of several startups and have a passion for training and mentoring. I have created commercially successful applications in a wide range of technologies, including NodeJS, GoLang, Java, PHP, Python, Javascript, HTML5, MongoDB, and MySQL. On the mobile front, I have created applications for iOS, Android, and Windows Phone 7/8 platforms using both native development tools and PhoneGap/Cordova. I have served in DevOps roles utilizing automated testing, continuous integration, automated documentation, continuous deployment, automatic scaling, and cloud infrastructure management. I love leveraging new technologies to solve complex business requirements.

I teach full-time for a major US University where I focus on Computer Science and Information Technology. I have taught both online courses and residential courses. I have complete several Post-Doctoral programs, including a PhD, a DBS, and several Master's Degrees.

I am also a U.S. Army Reserve Officer and serve as a Brigade Chaplain. I am tasked with monitoring unit morale, serving as a religious expert, providing counseling on a wide range of topics, and ensuring that any Soldiers with concerns have an advocate.

Specialties: NodeJS, GoLang, PHP, Java (Android, JEE and JSE), Python, Perl, XHTML, CSS, MySQL, MongoDB, Agile Management, .NET, DevOps, Jenkins, and many other tools and technologies