Skip to main content


Welcome to the world of computational thinking and computer programming! This course is designed to provide you with a solid foundation in the basics of programming, regardless of a specific programming language, although we use Python to demonstrate concepts and techniques. This course will cover the key concepts and elements of programming that you need to know to get started in the field of computing.

5 Key Concepts of Programming:

  1. Overview of the fundamental concepts of computer programming, including syntax, variables, data types, and control structures.
  2. Explanation of the problem-solving process in programming, including the use of algorithms and implementation of solutions.
  3. Discussion of the importance of debugging, testing, and code quality in software development.
  4. Overview of the software development life cycle, including design, coding, testing, and maintenance.
  5. Explanation of how programming concepts and skills can be applied to a variety of real-world scenarios, regardless of the programming language used.

Programming is all about using a set of instructions to tell a computer what to do. The basic building blocks of programming include syntax, variables, data types, and control structures. Syntax refers to the specific set of rules for writing code in a particular programming language. Variables are used to store and manipulate data in your programs. Data types determine the type of data that can be stored in a variable, such as numbers, text, or Boolean values. Control structures are used to control the flow of a program and include constructs such as loops, if statements, and switch statements.

Programming is not just about writing code, it's also about solving problems. In order to write effective code, you need to be able to identify a problem and then create a solution for it. This solution is often implemented as an algorithm, which is a step-by-step set of instructions for solving a problem. You will use algorithms in your code to control the flow of a program and make decisions based on the data you are processing.

As you begin to write more complex programs, you will encounter bugs and errors. Debugging is the process of identifying and fixing these bugs to ensure your code is working as intended. Testing is an essential part of the software development process and involves checking your code for both correctness and performance. Code quality refers to the overall readability, maintainability, and efficiency of your code. It is important to strive for high-quality code, as this makes it easier to debug and maintain your programs over time.

The software development life cycle is the process of creating and maintaining software applications. It includes the following phases: design, coding, testing, and maintenance. The design phase involves creating a plan for what your application should do and how it should work. The coding phase involves writing the code for your application. The testing phase involves verifying that your code works as intended. The maintenance phase involves fixing bugs, adding new features, and keeping your application up to date.

Programming skills are in high demand and can be applied to a wide range of real-world scenarios, including website development, data analysis, automation, and more. By understanding the basic concepts of programming, you will have the skills and knowledge you need to develop software applications and solve problems in any number of fields. Whether you are interested in creating mobile apps, building websites, or automating tasks, programming is a valuable and versatile skill that can open doors to many exciting career opportunities.


The course material, including all assignments and labs, is openly available from the start of the course. Our goal is to be transparent and open about the material in the course, giving you the opportunity to plan ahead and make the most of your time. This open access allows you to see what is coming up in future lectures, readings, assignments, and labs, so you can stay organized and focused. By providing you with this level of visibility, we aim to make the course as accessible and user-friendly as possible. This approach is in line with our commitment to creating a supportive and inclusive learning environment that empowers you to achieve your goals as a programmer.