LMS-SPADA INDONESIA

The Visual Programming course introduces the basic programming concepts necessary for beginners. The course should be fit for students who are willing to have a basic understanding of programming without prior knowledge in the field. The materials were chunked and delivered in a programming language-agnostic fashion. Solutions will be developed using flowchart-based language, Flowgorithm. Self-assessment tasks are available through GitHub Classroom.
The course covers the most basic yet important programming concepts, such as input/output, data & data types, variable & constants, operators (arithmetic, assignment, relational, logical, concatenation, precedences), branching, repetition (loop), array, modularity, function (parameters, returning values, recursive), and validation. Each material is equipped with a short review quiz and self-assessment task to help the student in measuring his/her learning achievement.
This course is open to students from any major, faculty, and university. The course should be worth at least 2 credits.
In this section, you will be introduced to the basic concepts of Computers from a hardware perspective and where programming plays it role. Afterwards, you are asked to do a short evaluation in the form of a quiz.
Material:
The output of a program or solution should address the questioning challenges. Output can be in manifested in many forms, such as images, video, signal, files, text, etc. On the other side, a program may also ask for some inputs from its users.
In this section we will learn what are input/output and their role in a solution or program.
This is a self-assessment assignment submitted via GitHub. The result is automatically graded by GitHub Classroom.
The grade is not taken as part of the final evaluation.
During the solution execution, data is supplied into the program and came out from it. But, what is data actually? In this section, we will learn the basic concepts of data. What it is and how we and the solution perceive it. More than that, we will also learn the concepts of data types and the importance of understanding them.
Material:
A value or data is stored in a temporary "bucket" called a variable. As the name suggests, its value may vary or change from time to time. The "bucket" itself is a temporary space in the computer's memory system. Sometimes we need a persistent and never-changed value, a constant. From the computer's perspective, a constant is a variable without the ability to change. This section will discuss the two concepts, variable and constant.
This is a self-assessment assignment submitted via GitHub. The result is automatically graded by GitHub Classroom.
The grade is not taken as part of the final evaluation.
Material:
Inside a solution there could be numerous instructions that operate one or more data and produce a new data. Operator is the one who operates the data. This section will introduces the types of operator, their usages, and which operator should be prioritized over the others.
Material:
It is possible that multiple challenges or problems have a very small number of similarities. Say, a challenge is a variant of another. In this situation, we may reuse the previous or existing solution. But, is the solution flexible to answer the new challenge? This variation is inevitable in the real-world scenario. To respond to such things, the solution must be designed to adapt its behavior based on certain conditions. This section will discuss branching, a way to control the program flow based on the fulfillment of a condition.
This is a self-assessment assignment submitted via GitHub. The result is automatically graded by GitHub Classroom.
The grade is not taken as part of the final evaluation.
Doing the assignment in pair is suggested.
Material:
Well, doing a repetitive action is a boring thing but it happens and is sometimes necessary. For example, you are asked to calculate the mean of height of all students in the class. Then you will take each student's height before averaging them and getting the mean. This is a repetitive action. The same also occurs in a solution, sometimes it needs to do a repetitive action. In this case, we use repetition to instruct a program to do a repetitive action. There are two types of repetition, deterministic and non-deterministic. Based on the type of repetition we choose the most proper repetition construct (for, while, and do-while). This section discusses the core concepts of repetition and how to use them.
This is a self-assessment assignment submitted via GitHub. The result is automatically graded by GitHub Classroom.
The grade is not taken as part of the final evaluation.
Doing the assignment in pair is suggested.
Material:
In a dynamic problem, where the number of data involving is arbitrary (sometimes within range), the corresponding solution should also be designed to be dynamic. For instance, a solution is designed to accept maximum 10 student names. The user then can enter a name, two names, five names, etc. To make such flexibility we could use an array, a simple data structure with the ability to store multiple data at once. This section discusses the core concepts of array.
This is a self-assessment assignment submitted via GitHub. The result is automatically graded by GitHub Classroom.
The grade is not taken as part of the final evaluation.
Doing the assignment in pair is suggested.
Material:
A complex problem or challenge may require a complex solution. Sometimes, the solution gets bigger and bigger. The bigger the solution, the more complex it becomes. Unfortunately, a very complex solution is less maintainable. To improve such condition, we could modularize the solution into smaller solutions. This section discusses modularity, an important property of a quality software.
A function is the smallest unit implementation of a modular solution. A large solution is decomposed into smaller units and each unit is implemented separately from the rest. This unit can be implemented in many forms, such as function, class, module, or package when some units are bundled as one cohesive structure. This section discusses function, function parameterization, and returning value.
This is a self-assessment assignment submitted via GitHub. The result is automatically graded by GitHub Classroom.
The grade is not taken as part of the final evaluation.
Doing the assignment in pair is suggested.
Material:
Garbage in, garbage out. A great solution must survive when its user enters an invalid value. To reach such state, the solution should be able to determine whether the input is valid or not. It must have a special routine when things go wrong. For example, a solution expects the user to enter 10 numerical values, but it receives an instance of textual values inside the 10 inputs. In this case, the solution could reject the invalid value and ask for another one as a replacement or simply ends the execution. This section discusses validation, an important strategy to prevent invalid input.
This is a self-assessment assignment submitted via GitHub. The result is automatically graded by GitHub Classroom.
The grade is not taken as part of the final evaluation.
Doing the assignment in pair is suggested.
Material:
If you managed to the end of this course and completed everything, congrats!
The next step would be throwing yourself into a more challenging programming courses, You may start by picking up a course which uses Java, Python, Go, or another programming language as its learning vehicle. Besides that, you could also learn a new paradigm like functional or object-oriented. Good luck!