Content Now Free!

Hello everyone! Due to the cost of running the course server, I've decided to cancel all existing subscriptions and just make my content accessible for free! Check out the links below!

Syllabus

This course is taught in 8 modules and mimics the education you'd obtain if you sat through an entire year of introductory programming at the university level. I've taught intro-level programming for 6+ years and am acutely aware of what beginners need to see and hear. In short, I DON'T SKIP STEPS!.

The 8 modules included in this course are as follows:

Module 1 - Basics

Module 1 covers the basics of programming, specifically with the Java programming language. The content in this section is almost always taught in a "101"-style intro programming course. A wide variety of concepts are covered, but the high-level topics and goals of this module are broken down into the following lessons:

Module 2 - Functions and Storage

Module 2 covers the intermediate topics of programming (in Java), specifically focusing on functions (methods) and storage (arrays and ArrayLists). The content in this section is almost always taught in a "101"-style intro programming course, although ArrayLists are sometimes taught at the beginning of a "102"-style intro programming course. A wide variety of concepts are covered, but the high-level topics and goals of this module are broken down into the following lessons:

Module 3 - Object-Oriented Programming

Module 3 covers the beginner, intermediate and advanced topics of programming (in Java), specifically focusing on object oriented programming. The portion of this module covering basic classes, is typically taught in a "101"-style intro programming course, while the rest is usually taught in a "102"-style intro programming course. A wide variety of concepts are covered, but the high-level topics and goals of this module are broken down in one monolithic lesson/program:

Module 4 - Exceptions and File Input/Output (I/O)

Module 4 covers intermediate to advanced topics of programming (in Java), specifically focusing on exceptions and file I/O. The content in this section is almost always taught in a "102"-style intro programming course, if it is covered at all. A wide variety of concepts are covered, but the high-level topics and goals of this module are broken down into the following lessons:

Module 5 - Memory Organization, Lambda Expressions and Basic Data Structures

Module 5 covers advanced topics of programming (in Java), specifically focusing on memory organization, lambda expressions and an intro to basic data structures. While memory organization may be taught in a "102"-style intro programming course, most of these topics are not covered at all in a "101" or "102"-level course. Topics in this course are taught to expose students to advanced topics so that they are more prepared for a course like Data Structures (typically comes after a "102"-style course). A number of high-quality slides are provided with this module since the concepts covered are more conceptual than previous content. A wide variety of concepts are covered, but the high-level topics and goals of this module are broken down into the following lessons:

Module 6 - Threads, GUIs and APIs

Module 6 covers advanced topics of programming (in Java), specifically focusing on threads, GUIs and APIs. While this module may prove to be the most fun for students, these topics are typically not covered in a "101"- or "102"-style intro programming course. These are essential topics that most students are forced to teach themselves. Understanding these topics well, even in the context of Java, will prepare students to jump into web-app or mobile-app platforms much more easily.A wide variety of concepts are covered, but the high-level topics and goals of this module are broken down into the following lessons:

Module 7 - Recursion

Module 7 covers advanced topics of programming (in Java), specifically focusing on recursion. Recursion is taught in some "102"-style programming courses or not until a Data Structures course. Lessons in this course are taught to expose students to recursion so that they are more prepared for a course like Data Structures (typically comes after a "102"-style course) and are not meant to provide mastery. A wide variety of concepts are covered, but the high-level topics and goals of this module are broken down into the following lessons:

Module 8 - Tranitioning to C++ (from Java)

Module 8 covers beginner and intermediate topics of C++, taught toward students who are well-trained in Java (like the students who completed Modules 1-7 of this course). A quick comparison is provided of syntax (Java vs. C++) and lessons demonstrate the differences of C++ when compared to the Java content covered in Modules 1, 2 and the portion of Module 3 covering basic classes. Lessons in this course are taught to jump start students into C++ so they have a solid foundation to confidently learn advanced C++ topics on their own. A wide variety of concepts are covered, but the high-level topics and goals of this module are broken down into the following lessons: