
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
This lecture presents the overall course structure and goals. It introduces the teaching methodology and the necessary materials for learning.
Through a simple cooking analogy, this lecture presents a way of conceiving the computer memory model and shows a simple example of a program using an elementary programming language. In addition, basic computer components are briefly shown and discussed in the context of their importance for the programming model.
A simple guide on how to install software on your computer while paying attention to important safety measures. You'll learn how to check whether software is safe to install and you'll be given a guide on which software you'll need to install on your computer for the rest of the course.
Continuing the book analogy, we discuss how to measure the amount of text and content in a book and extrapolate this to a broader concept of digital information. You'll learn how to assess the amount of data that can be stored on a medium (be it a book or a USB flash drive). On a more technical side, you'll learn how to use a so-called hex editor to create and edit files on your computer.
You'll understand that interpreting the content of a file, its semantics, depends on whoever is reading it, whether it be a person or an app on your computer. To facilitate this, you'll learn some very basic binary calculations.
This is one of the major lectures and understanding it is crucial for the rest of the course, so it is recommended to take this one more than once to better absorb the content.
Now that you know how to build a file from its basic elements, we can proceed to creating a file that a web browser app can interpret – an HTML file. In other words, you'll be making your first web page. You'll learn how to format text and create a beautiful colorful document without using Office tools to do so.
Web pages without functionality are rare, and here you'll learn how to imbue your web page with interactive functionality. You'll add a button to a page and change the content when it's clicked. You'll learn how to read documentation on the web and add your own functionality and you'll learn about variables and functions in programming languages.
It's exceedingly rare for a programmer to know the entirety of the programming language or platform they are using. Instead, they refer to the documentation. Here, you'll learn to do the same thing – you don't have to memorize an entire list of functions to be able to use them.
Many hardcore programming enthusiasts love to use "The Console" to automate, simplify and sometimes needlessly complicate tasks that would otherwise be done by clicking through settings and options windows. Here, we unravel the mystery of "The Console" and teach you it's basic purpose and use. Oftentimes, using the console is unavoidable.
Drawing on the cooking analogy from the first lecture, you'll write your first assembly program. Here, you'll understand that a program is a series of instructions that is translated into what is called machine code. You'll use the console interface to issue a command to the operating system to translate your text file with instructions into executable machine code.
Today, it's rare that you would write programs directly in Assembly language – it's difficult to read and often cumbersome. Yet, it's necessary in order to generate the executable files, programs, that the operating system can run. This is why higher-level languages were created. These languages feature a much more intuitive syntax and grammar. They are more like spoken languages than machine code. Yet, they translate into Assembly, which is then translated into machine code.
Exemplified through C++, you'll learn how to write a program using a higher-level programming language. You'll first do this through the console and then by using an integrated development environment (IDE). Alongside, you'll learn about conditional expressions, loops, simple data structures and abstract objects and their memory representations.
You'll use your knowledge of XML and HTML to build a simple user-interface. This approach to interface design is used by most mobile and desktop platforms.
Similarly to how you added JavaScript functionality to a web page, you will add functionality in the C# language to a XAML interface specification for a desktop application. You'll learn about events and connecting functions in code with the elements of the user-interface.
If you want to make your experimentation efforts more lucrative, you could try publishing your apps to an app store as you're learning. Create a simple calculator, a simple tool, or a quirky little game you were thinking of and publish it in your favorite mobile app store. In this lecture, I show you what is necessary in order to publish your apps on the most important mobile app stores.
Once again, we come back to the cooking analogy from the beginning. You can greatly expedite your cooking by multitasking (doing multiple things at once or doing things while you are waiting for others to be done). In computer programming, this is called multi-threading or multi-tasking.
You'll understand that certain elements of your program can be executed simultaneously, either to improve performance or to improve responsiveness of your app.
This is an advanced topic and it requires thorough understanding of everything presented up to this point.
Finally, we'll add some very simple 3D math and show how math actually connects with programming. You'll learn about vectors in three-dimensional space, their elementary math and how they are used in computer games.
We'll build a very simple video game in the Unity game engine using some simple 3D vector algebra and the C# programming language. You'll understand that a game engine can be viewed as an IDE that translates combined artistic and engineering efforts into a final executable file, a program, that is commonly referred to as a game.
Here, I'll provide you with some further reading and direction and will outline the things that I have deliberately left out for simplicity.
If you've come this far, you are certainly a devoted student. You've gone through some fairly complex topics and by this point you should have a solid understanding of what programming is, whether it is for you and how you could use it in the future.
If you're struggling with solving the three cooking problems I gave you, in this lecture I'll go through one possible solution step-by-step with a simple illustration that will help you understand how programs are executed by the processor.
Sometimes when you install a piece of software on your computer, it doesn't look exactly the way you expect it. Here, we'll discuss how to explore this and set up your working environment.
What is programming and how to write a computer program? It's often the case that beginners who'd like to learn programming don't know where to start or even what it is they are looking for. This course was designed for any novice looking to learn about programming and computers in general. Here, you'll learn everything you need to get started with programming the basics you need to know to start learning on your own. You don't need to know anything about computers to get started – this guide will cover all important topics and give you an introduction to the most important programming topics.
Each lecture is conceived in such a way to provide a new and interesting insight into how programming could be used not as a replacement career, but as a supplement to another. Besides being a useful tool in the modern technologically dominated society, programming can be an interesting and fun way to expand your creative endeavors.
Absolute beginner's guide to programming and computers is a course designed for the complete beginner. Unlike most standard programming courses, it minimizes the use of math and tech-heavy vocabulary and provides simple and relatable examples of programming, building real understanding of how to write a computer program and providing the student with actual usable skills within a minimal timeframe.
Instead of heavily focusing on specific technologies, Absolute beginner's guide provides the student with the core principles and, through examples and analogies, demonstrates a programmer's way of thinking. The course goes through several programming languages and so-called programming paradigms and elucidates the fundamental concepts of each one, including some of the most important ideas of procedural programming, assembly, object-oriented programming, web development (HTML and CSS), multi-threading, mobile development and even game development. You'll learn the basics of C#, C++ and JavaScript in a way that will let you transfer these skills to other programming languages.
The course is presented in such a way to allow you to build your skills independently. In this guide, you will learn how to read documentation and where to find answers if you ever get stuck with a programming problem. This way, the student who finishes the course understands the basics of the key branches of software development and has the skill to further advance and research on their own.
Although focusing on specific technologies can create experts in a specialized field, most professionals switch between many different technologies during their careers, but despite this constant switching, core ideas always remain, even when the details of a specific technology or platform have been forgotten. Instead of teaching details that could be forgotten when a new technology emerges, this absolute beginner's guide focuses on exactly those principles that are used across different technologies.
The course touches upon many topics while presenting only the most important material. It starts out lightly and gradually introduces more advanced concepts, all the while using little to no tech-focused vocabulary and nothing but elementary school math.