
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
Install CodeBlocks with MinGW and Dev C++ to set up a C++ development environment, write and compile hello world, and understand executable versus source code.
View variables as store locations with symbolic names that hold values and can change during program execution. Learn through simple C examples of integers, assignments, and basic operations.
Explore core data types in programming—bool, int, char, float, double, and string—along with memory implications, strong versus weak typing, and the difference between assignment and equality.
Master C++ variables by declaring, storing, and updating values, then apply arithmetic, relational, and logical operators, including remainder, to build expressions and boolean decisions.
Explore how if statements use boolean conditions with else if and else blocks to control which commands run, illustrated by a simple calculator example.
Learn loops and iteration in C++ by using while and do-while constructs to print hello world multiple times, control repetition with a condition, and prevent endless loops.
Learn how to use single-dimensional arrays in C to store multiple values, declare and initialize an array, and access elements by 0-based indices with contiguous memory, including printing results.
Explore how one-dimensional arrays become two-dimensional and three-dimensional arrays to store multi-class, multi-school student data, using indices and array size concepts to manage dimensions.
Explore multidimensional arrays with two-dimensional matrices indexed by row and column, using zero-based indexing for reviewers and movies. Declare a 3x4 rating matrix and compute a reviewer's average.
Understand that a function is a reusable block of code with specific inputs and outputs, enabling modularity and code reuse.
Master file input and output in C++ by learning to open, read, write, append, and read-write modes for handling text files.
Explore the fundamentals of object oriented programming, focusing on objects, attributes, and methods, and learn how object interactions drive modular, reusable software from analysis to design and coding.
Explore objects and classes as the core of object-oriented programming, where classes define data and methods and objects are instances, with examples like a circle's center, radius, and area operations.
Explore five types of methods and variables in object oriented programming: class variables, instance variables, member variables, class methods, and instance methods, and how they relate to classes and objects.
Master encapsulation and data hiding by binding data with its manipulating methods and restricting access with public, private, and protected access, enabling decoupled, maintainable classes.
Discover how dynamic dispatch enables message passing, letting objects select the code to run on a method call. Explore communication via messages, invoking class methods in unidirectional interactions across processes.
Explore how inheritance lets derived classes extend base classes, reuse methods, and model real-world relationships, from single to multiple, multilevel, hierarchical, and hybrid inheritance.
Polymorphism lets code treat circles and squares through a common interface, with a single draw method behaving differently per subclass, as shown by circle, square, cat, and dog examples.
Explore generalization and specialization in object-oriented design, where common characteristics form a superclass and distinguishing features create specialized subclasses, guiding when to generalize or specialize in a project.
Learn how links and associations define relationships between objects in classes, with cardinalities like one-to-one, one-to-many, and many-to-many, and see their use in databases and object-oriented programming.
Master sql through a three-step process that applies across popular relational databases, including mysql, oracle, postgresql, and ms access, focusing on retrieval and data management concepts.
SQL, the structured query language, enables storing and manipulating data in relational databases. Most popular web and mobile apps rely on SQL for creating and dropping databases and tables.
Install and configure XAMPP to run Apache, MySQL (MariaDB), and PHP locally, then install SQLYOG Community Edition as the database client.
Start and stop the apache web server and the mysql server to serve web pages and use the database, monitor server status, observe port 3306, and note the process ids.
Create your first database by connecting to the local server as root, using an empty password for the test version, then run create database my new test database.
Master the basics of database management by executing show databases and drop database queries, learning how to recreate a dropped database, and understanding the risks of data loss.
Learn to create a student table with id as integer, name as varchar(30), and grade as integer. Define a primary key on id and use decimal for degree as needed.
Explore how to drop a table in SQL, verify consequences with a select, and then use insert into to add new rows, reinforcing table management basics.
Learn how to use insert statements to add data into a table, specifying columns or omitting them with values, and verify results by refreshing the table.
Learn to create a new table from an existing table using select statements, duplicating all data with create table as select *, and view the results as a result set.
Master the basic select statement syntax to retrieve all columns or specific fields, such as names and ages, from a student table and refine results with targeted column names.
Master the where clause in basic select queries to filter records from a table, using conditions with integers or quoted strings and preparing for updates or deletes.
Learn sql operators beyond equality, including greater than, less than, and, or, to filter data. Example: select name and age from students where age > 8 and name = Tim.
Learn to update data using update queries to modify specific records, using where conditions, and apply updates to multiple columns or all rows in a table.
Learn to delete data using delete statements, including delete from students where name equals Chris, and delete all records with delete from a table.
Use the like operator in a where clause with wildcard characters such as % to filter names by partial matches, including starting with 'Chris' or containing 'MAL'.
Learn how to limit results in MySQL, MSSQL, and Oracle using limit, top, and rownum, with side-by-side syntax examples to return the top n records.
Learn how to use the order by clause to sort query results in ascending or descending order, including multiple columns and ensuring the sort columns appear in the select list.
Learn how to use the group by clause with a select statement to group identical data by name, and then summarize with counts and sums, before ordering by name.
Learn how to use the distinct keyword with select to return only unique records and eliminate duplicates in sql queries.
Learn how to use truncate table to delete all records while preserving the table structure. Compare truncate with delete and drop table for removing data or the entire table.
Learn C++ fundamentals by combining explanations with small coding problems and a practical score-summary exercise. This course moves from variables and control flow to functions and object-oriented ideas, with a separate SQL section for learners who want introductory database exposure.
Follow the development-environment demonstration, then work with types, operators, conditions, loops, arrays and file input and output. Object-oriented lessons introduce classes, methods, encapsulation, inheritance and polymorphism. Exercises provide opportunities to attempt a solution before comparing it with the accompanying explanation.
What to practise
Translate a short requirement into inputs, steps and an expected result.
Trace an array or loop without losing track of its valid range.
Explain a function's responsibility and how it receives or returns information.
Choose types deliberately when calculating a total or an average.
The final reading labs bring these ideas together. Define valid score input, summarise the data and compare ordinary and boundary cases. A separate activity examines C++ averages and the effect of type choices. Keeping the expected answer beside your code makes it easier to spot a result that looks plausible but is wrong.
Choose this course if you are starting C++ or returning to basic programming and want lessons supported by exercises. The curriculum also contains database topics, so review the balance if your priority is a particular language area.
Allow time to compile and change the examples in your own practice project. Recorded editor screens and tool versions may differ from your setup; consult current compiler documentation when needed. The focus is building a foundation you can explain and extend, rather than completing a large production application.
Making C++ logic visible through practice
A beginner C++ programme can combine several ideas even when it is only a few lines long. A value has a type, a condition chooses a path and a function produces a result. This course introduces those building blocks and then extends the discussion to objects, files and databases. The reading workshops provide focused opportunities to inspect input rules and numerical results. The intention is an introductory foundation you can explain, not a promise of exhaustive coverage of the entire C++ language or advanced application architecture.
Working with values deliberately
The variables and data-types lessons give you a place to connect representation with a task. A count, a score and an average may need different treatment. Before performing a calculation, state what each value means and what result you expect. This is useful when a program compiles but gives an unexpected number. You can investigate whether the problem concerns the formula, the chosen types or the input assumption. That is more informative than changing several expressions at once until one example appears to work.
Choosing between cases
Conditional logic turns a requirement into a decision. Write the cases in plain language before translating them into C++ syntax. If a score is accepted within a range, the values at the range boundaries deserve attention. A rule that works for an obvious middle value may still classify an edge incorrectly. The recorded examples support this kind of small investigation. Keep your expected result separate from the program's actual result so that a surprising output leads to a question rather than an automatic change in your expectation.
Loops and arrays
The repeated-processing sections introduce a common relationship: visit a collection and do something with its values. Identify which positions are valid and how the loop progresses through them. Trace the first and final expected visits. If you are summarising data, also identify the value that carries the partial result. This makes the algorithm easier to explain and gives you a way to locate a mistake. The course is a foundation for that reasoning, not a comprehensive treatment of every container, iterator or performance technique available in modern C++.
Functions as manageable units
A function is useful when it has a responsibility that can be stated clearly. Ask what it receives, what it returns and which assumptions it makes. The course introduces functions alongside file-related material so that you can begin separating tasks within a program. In practice, check a small calculation independently before combining it with more input or display logic. If an operation changes information beyond its result, include that in your explanation. Clear boundaries make it easier to compare an intended task with the implementation you are studying.
Understanding objects
The OOP section introduces classes, methods, encapsulation, inheritance and related ideas. Connect each term with a concrete role in an example. An object represents something, stores state and exposes operations according to rules. A useful explanation distinguishes that instance from the class that defines it. The beginner material gives you vocabulary for organising code without requiring a large design. Use it to make behaviour clearer, rather than adding complexity simply because a concept sounds more advanced.
The score-summary reading lab
The practical article asks you to summarise scores using clear input rules. This gives validation and boundary cases a purpose. Define which values belong in the calculation before deciding how to total them. A missing or invalid value should not quietly become an ordinary score without a stated rule. Keep a small table of sample inputs and expected summaries. This is a reading workshop you can extend independently, not a claim that the course includes a full assessment application or a production reporting system.
Why numeric types matter to averages
The additional article on averages focuses attention on a result that can look plausible while losing information. Integer division and the type used for a calculation can affect the answer. Explain the result you intend before trusting a number printed by the program. Choose a small dataset whose average you can calculate by hand, then compare it with the code's output. The useful skill is recognising that a correct-looking formula still depends on representation and evaluation rules. This gives the earlier type lessons a concrete practical connection.
Where to go after the foundation
The SQL extension introduces database concepts as a broader view of stored information. It does not make this a complete database-development course. Choose the curriculum if you want a structured first pass through C++ logic and OOP with exercises you can investigate. A compatible compiler, an editor and time for small experiments will help. Your next step can then be chosen deliberately: more language features, additional projects or deeper work on data structures. The foundation is strongest when it leaves you able to explain your own examples and the assumptions behind their results.
Curriculum at a glance
Variables & Data Types
If-Statements and Conditional Logic
Loops and Iteration
Arrays
Functions & Files
Object-oriented Programming
Beyond C++: From C++ to SQL - Using Databases to Store Data