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.
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.
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.
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.
Methods are how we give commands to our objects. In this lecture, we will demonstrate how to use the built in methods Alice provides.
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.
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.
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.
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.
In this lecture, we expand upon our conceptual understanding of stepwise refinement by starting with a larger problem and breaking it down.
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.
In this lecture, we write our code to respond to various events. This makes our animation feel more responsive and itneractive.
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.
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.
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.
Taking our foundational knowledge, we next move on to explore both fixed-count loops and conditional loops.
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!
In this less, we continue improving our game using stepwise refinement.
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.
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