Programming Foundations 1

This programming class for middle schoolers is designed to introduce basic coding skills in a fun and interactive way. Students will learn the fundamental concepts of computer programming, including variables, loops, and functions, starting with block-based coding and progressing to the popular Python language. Through hands-on activities and projects, they will gain the skills to create their own programs and animations. The class will also introduce problem-solving techniques and logical thinking, which are essential for success in programming. By the end of the class, students will have a solid foundation in coding and be able to apply their skills to a variety of projects.

Category

Middle School

Difficulty

Beginner

Technologies

Scratch, Python, VS Code

Format

In-Person

Duration

12 hours

Structure

8 Weekly lessons, 1.5 hours each

SYllabus

COURSE STRUCTURE

This lesson will introduce students to the basics of computers and software development. First, we will discuss what computers are and how they work. This will include a brief overview of hardware components, such as the CPU, memory, and storage. Next, we will introduce the concept of software development and explain why it is important in today’s technological world. Finally, we will walk through a simple coding example to give students a taste of what coding entails and how it can be used to solve real-world problems. This lesson will provide a foundation for further study in block and standard coding.

In this lesson, we will introduce the concept of Block Programming and its applications. We will specifically focus on Scratch, which is a popular block-based programming language and platform designed for beginners. We will guide students through the process of creating a Scratch account and explain its features. After gaining an understanding of the platform, we will walk through the creation of a simple Scratch program to showcase how easy and fun it is to bring ideas to life with block programming.

This lesson will focus students on using the Scratch IDE to create a simple Scratch program. The lesson covers the basics of motion, looks, and sound in Scratch, and provides students with hands-on practice in using these features to enhance their programs. Additionally, the lesson delves into the use of control structures in Scratch, including loops and conditional statements. Throughout the class, students will also run hands-on exercises to practice combining motion, looks, and control in their Scratch programs, and further building their programming skills and confidence.

In this lesson, which caps our learning of the Scratch programming language, we will build core understanding of operators and variables in Scratch. We will also learn about events and sensing, used to trigger actions in a program based on specific conditions and user interactions. Finally, we will learn about debugging, and have the chance to practice identifying and fixing errors in our programs. All these important areas will be accompanied with significant hands-on exercises to establish our practical skills.

In this lesson, we begin our journey with Python, a high-level, interpreted language that is easy to learn and use. We start with general concepts of programming languages and their significance in software development, and learn about integrated development environments (IDE). We will be installing our own Python IDEs, and will learn and practice data types and variables to define and store strings, integers, and floats.

This lesson takes us deeper into several important topics in Python programming, starting with exploring debugging techniques and how to troubleshoot common errors that occur while coding. Next, we delve into the various operators used in Python and how they can be used to perform mathematical and logical operations. This lesson also covers input and output in Python, including reading and writing data to files, and the value and usage of strings. The lesson ends with an introduction to the hackathon-based final project that will provide all learners with an excellent opportunity to apply their new programming skills to real-world challenges.

This lesson goes deeper into more advanced programming concepts like conditions, loops, and functions, that allow our code to control program flow, iterate through data, and easily implement reusable functionality. The lesson will then switch to teamwork activities allowing the hackathon teams to progress with their final project, with an official checkpoint giving each team a facetime opportunity with the instructor to finalize their work and presentation.

The last lesson of this course will provide the students with a concluding trainer-guided slot to wrap up and perfect their team projects, leading to the final section where each team will be presenting and demonstrating its completed project to the entire class, with parents attending. These final presentations will highlight the collaborative work of the students, will provide an excellent opportunity to obtain friendly feedback, and will allow them to celebrate their hard work and showcase the skills they gained throughout the course.