Available courses

The best videos showcasing current and future robotic capability and technology.

Computers, at their most basic level, store information in bits—a series of on and off states represented by ones and zeroes. Using this binary language, the information in images, audio, video, text, and other files can be saved and shared. This principle is the basis of all computing, including programming. Here Doug Winnie explains the basics of binary: how digital information is represented, encoded, stored, and communicated between computers.

This course is the first in our Computer Science Principles series, designed around the AP Computer Science Principles (CSP) curriculum. It is a great foundation for anyone, at any age, to prepare for careers in technology and computer science. Lessons in this segment cover the building blocks of computing: binary logic, number systems, text and image encoding, compression, and simple communication protocols. Understanding these basics will help you understand the interplay between hardware, software, data, networks, and the people that use them.

Topics include:

  • Binary and bits
  • Digital communication
  • Number systems
  • Encoding text
  • Compressing text and images

Programming is what allows us to make computers, devices, and the Internet perform amazing tasks, entertain us, and simplify our lives. While programming seems complicated, every programming challenge can be broken down into sections of code that you can define, control, and even reuse. You can learn the basic concepts of coding without needing to know a specific programming language. 

Join Doug Winnie as he explains the principles of programming and helps you connect to core concepts by exploring three ways that programmers perform their jobs. Doug starts by sharing the history of coding and then dives into functions, values, variables, and parameters used to define actions. He covers capturing input from users, creating conditional tests, using loops with arrays, and object-oriented programming basics. He also takes you beyond programming, into processes like debugging, refactoring, and building iteratively. 

Topics include:

  • Working with values and variables
  • Breaking down tasks
  • Customizing functions and parameters
  • Building conditional tests
  • Creating and changing arrays
  • Working with objects and classes
  • Debugging and refactoring code
  • Going beyond the code as a programmer

Quiz for CSP100 and CSP101 -- 80% or better required to continue to CSP102 and beyond.

A truly versatile language, Java is used for programming web, mobile, and desktop applications for a variety of platforms. This hands-on lab is designed to build on the concepts in the Computer Science Principles series. It shows how to apply concepts such as variables, functions, conditions, loops, and collections to the Java language. You also get an introduction to the basics of object-oriented programming (OOP) in Java. Download the free exercise files and follow along with series instructor Doug Winnie as he breaks down the syntax and shows Java in action.

Topics include:
  • The history of Java
  • Setting up your development environment
  • Working with values and variables
  • Using methods and functions
  • Capturing user input
  • Creating conditional tests
  • Using loops
  • Creating and changing arrays
  • Object-oriented programming in Java
  • Defining permissions
  • Extending classes

Eclipse is an industry-standard IDE and a critical tool for developers who want to build projects in multiple languages. In this course, Todd Perkins shows how to effectively use Eclipse's built-in tools and extensions to create, code, test, and debug projects in Java and PHP. He'll show how to adapt the Eclipse workflow to the nuances of each language, and integrate with Git for version control. By the end of the course, developers will be able to wield all of Eclipse's most essential features with confidence.

Topics include:

  • What is Eclipse?
  • Setting up a workspace
  • Adding external files to a project
  • Installing add-ons
  • Refactoring code
  • Working with tasks
  • Customizing formatting
  • Using Git for version control
  • Developing Java and PHP apps with Eclipse
  • Testing apps
  • Debugging apps


Robot ethics, sometimes known by the short expression "roboethics", concerns ethical problems that occur with robots, such as whether robots pose a threat to humans in the long or short run, whether some uses of robots are problematic (such as in healthcare or as 'killer robots' in war), and how robots should be designed such as they act 'ethically' (this last concern is also called machine ethics).

Robot ethics is a sub-field of ethics of technology, specifically information technology, and it has close links to legal as well as socio-economic concerns. Researchers from diverse areas are beginning to tackle ethical questions about creating robotic technology and implementing it in societies, in a way that will still ensure the safety of the human race.