Would you like to simply drill boring basic concepts with no real life application? If so, this course isn't for you. Or would you rather learn a variety of powerful concepts using modern development techniques while learning each topic with a great deal of depth. If this is you, then together we can discover the power of the Java programming language together. Other courses try to cover a million different topics with little to no depth, or try and spend the entire course on a topic that needs just 20 minutes. In this course we will be covering the most important topics for a Java developer to know. These include, variables, arrays, OOP principles, exception handling, optimization, algorithms, loops, basics of generics, and GUI program design. We will also extensively cover how to design a program and how to make a readable and maintainable program, both essential to building code for either a company or school. Even if you don't have any prior experience with Java or even coding at all, we will be working from the beginning and building our way up. We will explain each topic with increasing complexity so that no matter your programming background, you can extract a benefit from each lesson. We will be using the most popular language in the world and an open source IDE(Integrated Development Environment) that is used by millions of people every day.

Why Java?Java is the most popular programming language in the world and is used for the smallest embedded computers to room-sized super computers. It is used throughout the world to build Android applications, desktop program, and server side applications. The compile once, run anywhere motto means that we can create our programs on any type of computer and run it on any other computer with no difficulty. Finally, Java is part of the JVM class of languages such as Scala and JRuby.

Format of the Course:

This course can best be defined as a project-driven course. This will mean we will be building projects that will be solving real life problems. Some of the examples we will be doing include a leap-year calculator, a complete graphical version of the game blackjack complete with a computer controlled AI, a normal calculator for operations, a mode finder, and addition problem generator. All of these will be done in the code-along format so we can work together to see how to construct each part of the program. If you run into a problem, you will be able to simply look at the code to find the problem. A quiz will be placed at the end of each chapter along with a detailed description for each lesson. These will allow us to test our understanding of the lessons in addition to the case studies. Detailed lessons with explanations complete with live demonstrations will be there for every topic. Additionally, there will be a big emphasis on not just learning how to code, but also how the code works. We will always go into how your computer will process the code for even the seemingly smallest details. Also, we will emphasize how to build readable and maintainable programs that can be easily edited by possible co-workers. This will allow you to easily transition into a company or school where sharing code is expected. We will also have lessons that are sized in a format that is conducive to viewing on mobile devices.

Topics covered: We will be covering everything up to being a intermediate/experienced level programmer. This will include starting from the basics with variables, print statements, and taking input from the user. After this we will add more complexity with the more difficult control statements(if and else) where we will be using the basics of how to design a readable program. We will then add loops which will require the addition of more complex design patterns, and the construction of algorithms. We will cover all major loop types such as for and while loops. Methods and classes will be next, with in depth breakdowns of the conventions in Java that we must follow to make our program readable. We will the start to work with arrays and then add in how to handle exceptions and useful classes like the Date class. Interfaces and the large tenets of OOP design are going to be another major topic. Finally, we will finish by learning how to build complex GUI programs with the BreezySwing package.