Manipulating robot is a great way to learn programming techniques. Not only you can check out the outcome of your program in real world but also the end product (your robot), may be very useful in your daily routine. This is why we propose learning programming with robots.
Why java? One topic of the robot control is about managing complexity. Robots have many sensors, motors, and concurrent tasks. Because of this complexity, simple programming languages, such as Scratch, are not able to implement sophisticated business logic, very hard to win robotics competitions. The best programming language for robotics is C++/C. However, beginners are frustrated by memory management in C++. It takes very long development time for them to make their robot program running 24/7 without crashing or memory leaks. Java becomes the most rational language choice for robotics beginners. The garbage collector in Java silently does memory management job for you. Besides, Java is an interpretive language, which means that it is not compiled into machine code and the java virtual machine interprets the instructions, allowing the same code running on many different machines. Therefore, many robot systems take Java as development language, mainly to minimize the complexity from programmer’s perspectives.
This lecture will give students the solid foundation in Java. With excises on real robots, students will learn to set up Java development environments, connect to robots, and write codes to participate in our fun robotics lab. Students will be assigned into groups. Each group will build one simple robot and finish at least 10 projects to experience the interactions of sensors /motors, robot navigation, and some artificial intelligence concepts.
Lecture Contents:
- Introduction to Java Syntax
- Data types, loop, conditionals, array, input/output
- Functions
- Methods, libraries, recursion
- Object-oriented programming
- Objects, classes, interfaces
- Encapsulation
- Composition, inheritances, and delegation
- Polymorphism
- Data Structures
- List, queue, stack, vector, graph
- Sorting and searching