
Explore the fundamentals of programming, the job of a programmer, and the landscape of languages, libraries, frameworks, and career specializations shaping modern software development.
Trace the evolution of computers from the Analytical Engine to ENIAC and the internet boom, highlighting Ada Lovelace, Alan Turing, Space Wars, ARPANET, and the rise of programming.
Explore how hardware and software drive computers, detailing the CPU's cores and clock speed, RAM, HDD/SSD storage, binary data represented by bits and bytes, ASCII conventions, and peripherals.
Understand how operating systems like Linux, Windows, macOS, Android, and iOS manage multitasking by scheduling CPU time and memory, using drivers, and serving as a layer between apps and hardware.
Explore how programming gives computers a set of instructions, from high level languages to machine code, and how compiling with a compiler and running Java code reveals the output.
Master the terminal, a text-based interface with a command line and shell to control the OS. Use essential commands like ls, dir, mkdir, and cd.. across Linux, macOS, and Windows.
Download and install the Java Development Kit for your OS, add the bin directory to your path, and verify with java -version.
Learn to create and save a Java source file, write a simple program with a main class and System.out.println, compile with javac, and run the result to print Hello, world.
Explore how computers work, their invention, components, and operating systems, practice using the terminal to run commands, and write your first Java program while previewing IntelliJ IDEA and programming fundamentals.
Explore the timeless fundamentals of programming using Java to illustrate core concepts. Install a real programming environment, learn to write code, and practice solving problems.
Set up a Java development environment with the IntelliJ IDEA community edition, create a new Java project, run code in the IDE, and explore JDK, compilation, and print versus println.
Explore syntax as the rules that structure Java code, including keywords like public, class, static, and void, braces, semicolons, and the main entry point.
Learn how code executes line by line from top to bottom, starting at the main method and printing each command to the console in sequential execution.
Explore how code readability relies on comments, the most frequently used line comments with // and multi-line comments with /* ... */, which the compiler ignores and editors highlight.
Learn how variables serve as typed containers with a name and value, declared and initialized in Java, including naming conventions like camelCase and underscores, and using int and print statements.
Explore primitive and non-primitive types in Java, including byte, short, int, long, float, double, boolean, char, and strings, and contrast static typing with dynamic typing.
Explore arithmetic operators in code, performing addition, subtraction, multiplication, division, and modulus to calculate values like a rectangle’s area, using precedence, parentheses, and increment or decrement.
Learn how assignment uses equals to store values in variables, explore operator precedence, and use augmented assignment like plus equals, minus equals, multiply equals, divide equals, and modulus equals.
Practice scenario shows how to calculate concrete volume by multiplying width, length, and height in meters, then increase by 10% and optionally round to two decimals using float or double.
Learn to initialize width, length, and height as floats, compute volume by multiplying them, increase by 10 percent, then round to two decimals with Math.round in Java and print result.
Learn debugging to locate and fix errors in code using breakpoints, stepping through lines, evaluating expressions, and validating variable values to ensure correct output.
Learn how strings are objects with methods like length, to lowercase, and concat. See how the plus sign handles string concatenation versus numeric addition.
Learn how to include double quotes in strings using escape characters, print sentences, and use backslash escape sequences for quotes, new lines with \\n, and tabs with \\t.
Develop string skills to format the volume output for calculating the concrete of an area. Display the ordered volume as 3.85m³ and align width, length, and height using tab separators.
Master Java printing by concatenating width, length, and height in cubic meters with plus operators, tabs, and backslash escapes for new lines.
Explore how the Java API provides pre-written code for common tasks, like printing strings with println, and navigate modules such as java.base and java.lang with IntelliJ for quick access.
Learn how to read user input from the console using the read line method, store it in a string variable, and print a personalized welcome message with string concatenation.
Explore type conversion and type casting, including automatic widening and manual narrowing, illustrating with integers, floats, doubles, and parsing strings to numbers.
Prompt users to enter width, length, and height to calculate volume without changing the code. Learn to use system console read line to convert input to float for volume.
Replace hard coded values with user input, prompt for values, convert entered strings to floats using parse float, and handle non numeric input to perform calculations such as 3.85 m³.
Explore how comparison operators evaluate values to booleans using a score example, showing greater than, greater than or equal, less than, less than or equal, equal, and not equal.
Explore boolean logic for conditions like a score between 7 and 9 using and, or, and not. Observe how truth tables and expression evaluation order guide decisions in code.
Explore conditional statements and branching using if, else, and else if to control flow with boolean conditions, featuring door code checks and odd/even using modulo.
Create a bmi calculator app that accepts weight in kilograms and height in centimeters, converts to meters, computes bmi, and prints bmi along with category (underweight, normal weight, overweight, obesity).
Build a bmi calculator that reads weight and height, converts to metric, computes bmi with parentheses, and classifies as underweight, normal weight, overweight, or obesity.
Understand how arrays store multiple grades in one variable, use zero-based indices and length to access the last value (length minus one), and resize by reassigning a new array.
Learn to use for loops to iterate arrays, maintain a cycle variable, define end conditions, increment, and compute an average by summing elements and dividing by length.
Master the while loop by defining a condition and initializing a counter to print numbers. Use break and continue to manage termination and iteration, and compare with for loops.
Build a temperature data analysis app that reads up to ten temperatures into an array, computes the average, reports the min and max values, and counts days above the average.
Calculate the average, min, and max of a float array, count days above average, and implement a bonus user-input loop using for and while constructs.
Learn how methods and functions organize code and avoid repetition through reusable blocks. The caption uses a greet example and parameters to show how the call stack handles method calls.
Learn how methods return values, define overloads for int and float, and use the return keyword to supply results, illustrated with a sum method and math class overloads.
Learn how programs use command-line arguments via the main method's args array, print each argument with a loop, and handle missing arguments to prevent errors, avoiding hard-coded paths across systems.
Improve a shopping cart app by passing tax as a program argument, removing duplicated code, and using dedicated methods to compute and print total and gross total after each item.
Refactor code to remove hardcoded tax by parsing the first argument with float.parseFloat and adding static methods itemAdded, calc total, and gross total to preserve behavior.
Examine blocks and scopes in code, showing how curly braces define blocks and control variable access across loops, conditionals, and methods, with outer variables persisting and inner declarations disappearing.
Handle runtime and compile-time errors in Java by using try and catch to manage number format exceptions when parsing user input, and provide user-friendly feedback.
Build a sales performance tracker by collecting up to 100 floating point numbers, re-prompting on invalid input, and computing total, average, and the days with the highest and lowest sales.
Initialize a 100-element float array, track size, read data with validation, and compute total, average, highest, and lowest values for print-ready results.
Celebrate your progress in programming, from installing a code editor to writing code. Master variables, types, operators, conditional statements, and loops to prepare for object oriented programming.
Explore coding paradigms, contrasting structured programming with object oriented programming. Learn how objects with data and methods enable cleaner, maintainable code and organize projects into multiple files and classes.
Classes act as blueprints for objects in object-oriented programming. Create a user class with attributes and methods, instantiate objects, and use the dot operator to access data and greet users.
Create objects with the new keyword by using constructors to initialize attributes, possibly with parameters. Overload constructors to support defaults and different parameter lists, and use this to chain constructors.
Create a bank account class with a string account number and balance, supporting add and withdraw with nonnegative checks, 10,000 threshold, and transaction tracking that prints data including owner's email.
Develop a Java account class with account number and balance, implement add and withdraw methods with validation, print data, track transactions, and integrate a user owner for demonstrations.
Discover how variables hold references to objects, how changes propagate when multiple references share the same object, and how objects, strings, and arrays live in memory via the heap.
Discover primitives versus references in Java, their default values, and how null and null pointer exceptions arise. Learn about wrapper classes and autoboxing as a bridge from primitives to objects.
Explore how packages organize source files like folders, create and import classes across packages, and use java.lang and java.util for lists and sets.
Master encapsulation in object oriented programming by hiding fields and exposing only controlled access through getters and setters. Use public, protected, and private modifiers to keep code maintainable.
Learn how static methods belong to a class, not objects, enabling utility functions like temperature conversions. Use TemperatureConverter to convert Celsius to Fahrenheit and vice versa.
Explore static attributes and constants, including pi, within a circle class; learn static vs non-static methods, and how main creates objects to compute area.
Develop a web shop app to manage products, prices, and stock, update stock and price with non-negative checks, and implement a global 10% discount using a static or instance-based method.
Create a product class with private fields, a constructor, methods to update stock, set price, print details, and a static discounted price calculation; extend with max stock and package refactor.
Discover how object oriented programming organizes code using classes that encapsulate data and methods, enabling maintainable, understandable designs and breaking problems into smaller parts.
Explore libraries and frameworks, build tools and dependency management, unit testing, version control, and CI/CD pipelines, and learn how developers use search engines, StackOverflow, and AI to boost productivity.
Explore how libraries and frameworks accelerate development through reusable code and pre-built structures. Learn distinctions, benefits, and examples like numpy, three.js, Django, and Angular.
Explore how package managers handle libraries and dependencies, including versioning and registries, with examples from Python's pip and Java's Maven, and from APT, Chocolatey, and Homebrew.
Build tools automate compiling, packaging, testing, and deployment, turning source code into executables and managing dependencies. Explore language-specific tools, general-purpose options like Bazel, and IDE build systems.
Demonstrates using Maven to manage dependencies, configure pom.xml, and build a Java project in IntelliJ, including Apache POI code to create an Excel file.
Explore automated unit testing, which tests isolated components to catch bugs during development, improve code quality, and support safe refactoring using frameworks like unit testing, Jest, and JUnit.
Learn to write unit tests with JUnit 5 in a Maven project, testing a product's update stock method with getters and @Test annotations.
Learn how version control systems manage changes to code and documents, enabling collaboration, history tracking, branching, and safe merges with Git, GitHub, GitLab, Bitbucket, and other platforms.
Automate your code workflow with pipelines that build, run unit and integration tests, and end-to-end tests after changes in version control, and deploy with continuous deployment.
Explore stack overflow as a developer Q&A hub to search problems, compare answers from a global community, and apply the best solution, including rounding tips and when to use BigDecimal.
Explore how AI tools augment programming, using ChatGPT, GitHub copilot, Cursor AI, and windsurf to learn basics, explain code, generate snippets, and test ideas while noting limitations.
Explore libraries, frameworks, and package management, building with Maven and unit testing, and use version control, CI pipelines, Google and StackOverflow, plus AI tools like ChatGPT and windsurf.
Explore the software development life cycle, from gathering requirements to deployment and maintenance, and learn methodologies like waterfall and Agile, plus pair programming and test driven development.
Identify and analyze business and functional requirements to align software with stakeholder goals and high-level aims, and document them using user stories and use case diagrams, plus non-functional quality expectations.
Define goals and outline steps to allocate resources and create a clear plan for software projects. Identify tasks, timelines, risks, and a plan b to produce a roadmap.
Plan execution by outlining software structure, user interface layout, and data management with UML diagrams and component designs, and explore high level system design and databases, plus interface design and wireframes.
Read and understand the task, then develop with test driven development, pair programming, and code reviews, following coding standards and language style guides to deliver high quality code.
Execute a thorough testing discipline by validating functional and non-functional requirements, performing manual and automated tests, and iterating from design to reporting to catch bugs and ensure quality.
Coordinate deployment by moving code from staging to production, using configurable environments and blue-green or canary strategies, while automating builds, tests, reviews, and rollbacks via a continuous deployment pipeline.
Execute ongoing maintenance to keep the application functional and secure. Support users, monitor performance, update dependencies, back up data, and log events to guide fixes and reports.
Explore how waterfall and agile shape the software development life cycle, detailing sequential design, testing, deployment, MVP milestones, and adaptive iterations.
Discover a developer’s day from stand-ups and jira task boards to creating feature branches, performing pull requests, and code reviews.
Clarify roles and responsibilities in software projects, from product owner and business analysts to project manager, CTO, UI/UX designer, system architect, developers, testers, QA engineers, and DevOps, covering planning.
Explore the full software development life cycle from requirements planning to deployment and maintenance. Compare Waterfall and Agile, and highlight the roles of product owner, QA, and engineer beyond coding.
Explore programming languages, their types, and primary usage from C and C++ to Java, Python, JavaScript, TypeScript, C#, plus Go, Ruby, and Rust to decide which fits you best.
Explore why different languages suit different tasks, including compiled versus interpreted execution, platform independence, and just-in-time approaches, with examples like C, Java, Python, and JavaScript.
Explore the foundations of C and its extension C++, from Unix origins and a compiled, statically typed design to modern uses like embedded systems, game development, and cross-platform desktop apps.
Explore how Java, a statically typed, high-level language, achieves platform independence through bytecode and the JVM, enabling write once, run anywhere across web backends, Android, big data, and enterprise systems.
Explore how JavaScript, designed by Brendan Eich, adds interactive behavior to websites as an interpreted, dynamically typed scripting language. See how TypeScript introduces static typing and compiles to JavaScript.
Discover Python, designed by Guido van Rossum in the Netherlands, first released in the early 90s, Tiobe index top language with versatile libraries for web, data science, and artificial intelligence.
Master C sharp, a high-level, statically typed language for the dotnet framework. Compare its similarities to C and Java, and explore uses from web apps to Unity game development.
Learn how OS scripts automate terminal tasks and manage system operations with shell scripts such as bash and batch files, enabling backups, monitoring, and scheduling.
Explore a range of programming languages from Go and PHP to Ruby and Rust, highlighting performance, concurrency, web development, and low-level assembly use for specialized tasks.
Survey major programming languages and their characteristics, including compiled vs interpreted and statically vs dynamically typed, with examples such as C, C++, Java, JavaScript, TypeScript, Python, C#, and shell scripts.
Explore how to choose your developer path by understanding backend, frontend, mobile, game development, automated testing, machine learning, and data science roles, duties, and tech stacks.
Explore how web developers create internet apps using HTML, CSS, and JavaScript, interact with APIs and JSON, and distinguish front-end and back-end roles from DNS to browsers.
Master server-side coding and API development as a backend developer, handling requests, managing databases, and ensuring security with authentication and data protection.
Front end developers craft the user interface and interactive elements of websites on the client side, enabling responsive layouts, API integration, state management, and dynamic user experiences.
Become a full-stack developer by mastering frontend and backend with JavaScript and TypeScript, Node.js, and Express, then learn SQL databases, NoSQL options, security, pipelines, and cloud.
Explore the mobile developer role across native and cross-platform paths, covering Android and iOS stacks, languages (Java, Kotlin, Swift, Objective-C), UI tools, API integration, data management, testing, and workflows.
Explore the thriving world of game development, from choosing Unity, Unreal, or Godot to building 2D/3D worlds with visuals, physics, animations, audio, and AI.
Explore the role of automated testers, how automated tests enable robust software and rapid delivery, and the learning path from manual testing to automation with end-to-end, API, and mobile testing.
Understand the roles of data scientists and machine learning engineers, from collecting and cleaning data to deploying AI models. Master Python, SQL, and tools like Pandas, NumPy, and scikit-learn.
Explore non-programming roles in software teams, including IT operations engineers managing servers and cloud infrastructure, DevOps, testers, project managers, product owners, UI/UX designers, analysts, writers, and customer support.
Identify starter roles like desktop developers and embedded developers, and learn why they may not be ideal. Choose a path that turns learning into becoming a professional software developer.
Programming requires time and effort and may feel hard, but most learn it, overcome uncertainty and imposter syndrome, and gain joy from solving complex problems with mentoring.
Compare online courses, bootcamps, and universities to start a programming career. Learn how flexibility, self-paced learning, portfolios, interviews, and cost influence your choice.
You're curious about programming but have no idea where to start — and you don't want to waste months learning the wrong thing. This course gives you the full map.
Why should you bother learning programming?
Our world is connected by the Internet which creates the global market, the biggest one in the world. The Internet is made of billions of computers and every one of them needs software to work. Software is made by programmers so investing in learning programming seems a pretty solid decision.
Who is this course for?
Thinking about a career change but don't know where to start.
Tentative about your career decision.
Any kind of stakeholder in a software development project who wants to understand programmers better.
Curious about modern technology and want to know exactly what programming is.
If you are interested only in learning a specific programming language like Python, then this course may not be your best choice.
What is included?
In this course you will write and run your first Java programs from scratch, even with zero experience. Learn about the workings of computers and the fundamentals of programming which is shared amongst many modern programming languages like variables, conditional statements, loops, error handling, etc. You will solve many programming exercises because learning programming requires practice. I use Java for teaching but the topics covered work very similarly for other languages like Python or JavaScript.
You will learn the basics of object oriented programming which is a code structuring technique that helps to produce more maintainable and understandable code.
You will be aware of the tools that programmers use day by day like libraries, frameworks, package managers, build tools, unit tests, version control systems, pipelines and AI based tools.
You will learn the process of making applications and the software development lifecycle including different methodologies like waterfall or agile development.
You will learn the characteristics of different programming languages and will be familiar with the top six.
You will learn about the different developer roles like backend, frontend, mobile, game developers or automated testers and data scientists and machine learning engineers. You will learn what kind of tasks they work on and what skills they require in order to solve them.
What will you gain?
By the end of the course you will be confident in the basics of programming and will have a broad understanding of the whole software development industry so you will be able to make an informative decision about your career path and plan your learning in order to become a software developer and understand programmers and their work better.