
Learn to code in Java and build polished Android apps from scratch, with the course guiding you through Android essentials across 19 sections and over 100 chapters.
Explore Android Studio as a fast, feature-rich IDE for Android development, with templates, form-factor previews, international string editor, Google back-end services, fast code completion, and project-wide rename and find usages.
Explore android testing options—emulator with android studio and sdk, physical devices, and motion—highlighting speed, cost, accuracy, and pre-made device downloads.
Say goodbye to hello world and start your journey to become an Android developer from scratch by building real mobile apps that wow on Android devices.
Become a code detective by learning to read the Java behind mobile apps, and bridge from application behavior to Android development.
Train yourself to inspect a Java file by locating class, examining its attributes at the top and its methods, with the class named after the file and aligned to conventions.
Master core syntax symbols in Java, including braces, semicolons, parentheses, brackets, and operators, for clearer code. Also learn camel case, Pascal case, and snake case conventions.
Learn to read java method signatures by identifying accessibility, return type, method name, and parameters, using the roundCornerImage example to show bitmap inputs and a float parameter.
Learn common Java data types and variables for Android development, including int, string, boolean, char, and float, and how to define classes with attributes and assign values.
View memory as numbered lockers with addresses; writing opens a locker, reading retrieves data. Use pointers to link multiple lockers and form contiguous data within fixed sizes.
Explore how memory works by mapping on/off switches to binary, learn contiguity and pointers, and distinguish primitive types and reference types in Java for efficient memory usage.
Explore Java primitives from byte to boolean, showing default values, bit sizes, and how integers, floating points, and chars are represented in memory.
Understand how references act as pointers to memory, not actual values, by exploring arrays, null, and assignment. Learn to distinguish memory addresses from data and avoid off-by-one and null errors.
Explore Android Studio, built on IntelliJ, with smart code completion, a visual layout editor, and lint analysis to preempt issues, while setting up the Android SDK and tools.
Configure Android Studio with a dark theme and line numbers, explore the project and layout editor, and run the bar talk app on a device or emulator.
Learn how to declare and initialize integer arrays in code, assign values to specific indices, and understand zero-based indexing and array length, including shorthand initialization.
Explore Java's collections API through lists, including ArrayList, LinkedList, and Vector, and learn how to maintain order, access elements by index, and insert items with the add method.
Explore sets—HashSet, TreeSet, and LinkedHashSet—and learn how they ensure uniqueness by avoiding duplicates, including the idea of a sorted set, using string elements like dog, cat, and moose.
Learn how maps, including hash maps and hash tables, use key-value pairs to store readable data, nest maps, and compare with arrays for practical Android data handling and API use.
Explore how a class serves as a blueprint and how the new keyword creates objects in memory, turning references into actual class instances and arrays.
Explore how constructors run at object allocation, control initial state, and dictate initialization order—memory allocation, member variables, then the constructor. See how default constructors are generated when none are defined.
Discover how Java's garbage collection automates memory management by tracking object references and releasing memory when no references remain. Understand non-transitive pointers and when the collector runs to reclaim memory.
Explore Java operators and assignments, from arithmetic and unary operations like increment and decrement to sign changes and logging, and learn comparison, not, and logical and/or for complex conditions.
Learn how the return keyword sends data back from a method in Java, using a + b to illustrate data flow as code jumps to a method and returns result.
Master control flow with the if statement by checking conditions to branch logic, using boolean tests and assignment versus equality to decide when to turn on the heater.
Apply if-else and else-if logic to control code flow based on conditions. Use temperature-based examples to show turning the heater on or off and branching into multiple conditions.
Learn how the for loop repeats a process by iterating an iterator from 0 to the array length to convert each test score to a percentage.
Demonstrate nesting of for loops by comparing two letter arrays, using i and j to count matching characters. Learn how inner and outer loops traverse trouble and bubble.
Explore how the while loop repeats code while a condition is true, contrast it with do while, avoid infinite loops, and apply it to indeterminate cases like searching an array.
Learn to use break and continue in loops, exiting early or skipping iterations, with a for loop that finds b in a char array and increases howManyBs.
Explore how a switch statement replaces long if-else chains to map an int month to its name, improving readability with case blocks and a default branch.
Learn how to compile and debug Android apps in Android Studio, using Gradle to build, and employing breakpoints and the debugger to inspect variables with step by step execution.
Explore interpreting control flow statements by predicting execution paths through start methods, breakpoints, for loops, if statements, while loops, and method calls without the debugger.
Learn the differences between stack and heap memory, how primitives live on the stack and objects use the heap with pointers, and how garbage collection manages unused memory.
Code along with the instructor to implement pangram test using control flow and a for loop, while learning has letter logic and debugging helpers in Android development.
Encapsulation in Java lets you store state and define behavior inside a class, using this to reference the instance and constructors to initialize setup and punchline.
Explore scope and accessibility keywords in Java: private, protected, and public, plus defaults, to encapsulate state, guide getters and setters, and prevent bugs.
Learn to generate getters, setters, and constructors using android studio's auto generation tools to quickly build robust data classes.
Explore inheritance and polymorphism by extending a bot to joke and comedian bots, using override and super to customize behavior while reusing existing code.
Explain mutable and immutable concepts, using final to lock variables and methods from changing. Use static to share data across all instances and understand static context limits.
Master the enhanced for-loop (for-each loop) in Java to iterate over collections with improved readability and fewer off-by-one errors, replacing index-based loops for cleaner, safer code.
Create a comedian robot in Java for Android by building a joke data class with getters and setters, then extend Jokebot with Comedianbot using inheritance and random joke selection.
Explore how classes, abstract classes, interfaces, and callbacks empower Android apps, using a door analogy with blueprints, specifications, building codes, and sales orders.
Explore abstract classes and their benefits, showing how concrete classes implement a shared abstract interface, with examples like device, media, and a play method.
Explore what interfaces are in Java, how they define method signatures without bodies, and how implementing a contract enables reusable, reliable code across different objects like lights and switches.
Turn asynchronous events into responsive behavior by wiring up switchable objects via a callback interface; save references, register and unregister callbacks, and prevent memory leaks while enabling future events.
Master typecasting in java by casting objects to specific classes to access methods, and cast primitives like doubles to ints to create numbers within a range, while noting run-time risks.
Learn how generics create reusable, type-safe adapters by parameterizing data types with constraints, using extends and multiple bounds to handle cats, dogs, and other animals.
This code-along demonstrates turning concrete devices like fans and lights into abstract switchable components using interfaces, enabling inversion of control, separation of concerns, and reusable, type-safe code.
Explore how generics power flexible adapters in Android by creating a generic adoptable adapter that works with any type implementing animal and adoptable, and understand type erasure and angle brackets.
Apply six mobile design principles to craft engaging Android apps by prioritizing audience, using visual cues, grids, and consistent color, size, and shape; ensure continuous feedback on the main thread.
Explore how SML drives Android layouts, using opening and closing tags, angle brackets, and nested blocks to define relative layouts, image views, linear layouts, and text views.
Explore how Android Studio's layout editor links code to an XML-described UI using the res folder and R.layout.activity_layout to create responsive layouts with linear layouts and text views.
Leverage linear layouts to arrange views in horizontal or vertical order, set heights to match_parent, use 0dp with weights for equal columns, and nest layouts from the inside out.
Learn how relative layout handles complex UIs, create activity_relative_layout.xml, set a background color, define a centerText view, and position a button with layout_below and centerHorizontal.
Master margins and padding in Android layouts to balance external space and internal content using dp values for consistent, responsive layouts.
Explore how Android gravity and layout gravity control content alignment within views and relative to the parent, using a linear layout to position elements at top, center, or bottom.
Place dog.png in res/drawable using lowercase underscores, then reference it as a background or in an image view’s src, and choose scale types such as center crop or fit XY.
Register a click listener for a button with an anonymous OnClickListener, obtain the button via findViewById, handle clicks, and update the user interface while keeping references as member variables.
Code along to build a full Android UI from scratch. Master relative and linear layouts, padding, margins, and gravity while handling color hex values with a digital color meter.
Learn how to navigate between Android activities using explicit intents, wire up buttons, declare activities in the manifest, and move back and forth between screens.
Explore the Android activity lifecycle, including onCreate, onStart, onRestoreInstanceState, and onResume, and learn how onPause, onSaveInstanceState, onStop, onDestroy, and rotation affect state.
Learn to switch between two Android activities using intents, register activities in the manifest, bind views with setContentView, and understand the idea that there is no application, only activities.
Learn how to pass data between activities with intents, using putExtra and getExtras, and return selections via start activity for result and onActivityResult with a spinner.
Learn to pass data between Android activities with intents, bundles, and startActivityForResult, including returning results and detail navigation using spinners.
Learn how to use implicit intents to leverage other apps for actions like view, dial, geolocation, and camera, and register intent filters to participate in the Android ecosystem.
Explore how implicit and explicit intents let an Android app invoke other apps and ecosystem features, configure actions like view, dial, or capture, and ensure safe, flexible integration.
Discover how Android list views power infinite scrolling by binding data to row templates with image and text via the adapter, and wiring data, view, and backend logic.
Learn to implement an Android list view by wiring a list view to an array adapter with a row layout, supply a string data array, and handle item clicks.
Explore building a basic ListView in Android with an array adapter, using the activity as context and a simple row layout, versus default Android templates for prototyping.
Design a custom adapter for a list view to display place objects with tailored rows, using getView and inflate to bind names, zip codes, and images.
Code along builds a custom list view with an array of place objects, wiring a place adapter to inflate rows and bind image and text data.
Learn how to implement the holder pattern with view tags to recycle list view items, reuse views, and attach a single click listener for smooth, scalable Android lists.
Learn to implement a professional custom adapter for Android ListViews using the holder pattern to recycle views, cache view references with convertView and setTag, boosting smooth scrolling and memory efficiency.
Do you want to build applications for the most popular operating system in the world?
Do you want the opportunity to put your apps on over 1 billion devices?
"Become An Android Developer From Scratch” is designed to be the best first step to launching your career as an Android Developer. Whether you've never programmed before or are coming to mobile development for the first time, if you're truly inspired to learn Android Development, this is where you need to start.
This course has been in development for over two years, continuously perfected through research and testing in training bootcamps throughout the US. It represents a collaboration between a professional educator with over 20 years of experience in helping people learn and a professional mobile developer who has helped companies like Sony, Verizon, and nVidia build stunning mobile applications.
Starting with how the Java programming language works and progressing all the way to advanced Android concepts, you will get expertly produced instruction, visually descriptive explanations of deep concepts, screencasts that talk you through not just the “how” but also the “why,” and code challenges to test yourself and mark your progress.
Here’s what students are saying:
“Very clean and well done. Covers everything that you need to know for getting started whether you know how to code starting out or not. If you are at a loss trying to start making android apps this is the course for you.”
“I like this course, this would transform any normal person to a full fledged android developer.”
“This one is, by far, the most comprehensive, easy-to-follow, and genuinely well put together one of the bunch.”
“Inspirational! - got me over the hump (complete android beginner)”
Why it’s working...
One of the things we're most excited to offer with this course is access to the inner workings of the mind of a professional mobile developer. Throughout the course you will be able to listen in as our Learning Scientist teases apart all the thoughts that run through a professional mobile developer’s mind as he’s writing the code you will learn to create. It’s like sitting down in a movie with the writer, director, and lead actor. But in this case, it’s all in support of your transformation from novice to professional.
You will build several applications throughout the course, and the starting point for each project (as well as solutions to each challenge) will be available for download. You will also get all the visuals and info-graphics used throughout the course for reference and study.
"Become An Android Developer From Scratch" will give you a new, richer perspective on how mobile devices work. After you’ve completed this rigorous, challenging, and super fun course, you will be able to create your own apps, deploy to the Google Play store, and even interview for a job anywhere in the world.
The real value...
The most important thing you will get from completing this course is the confidence to say “I’m an Android Developer!” You’ll be able to interact with other students and professionals in the Android community with pride and self-assuredness. You’ll also become an independent learner, able to discern where to go for information and how to continue advancing your skills.
No course is going to make you into an expert. It’s up to you to challenge yourself and find your path to making the apps you dream about. Become an Android Developer from Scratch is the best place to begin. Are you ready to get started?