# A manual for a computer science teacher

## 8th grade, 1st quarter (8 lessons)

**Topics:**

- Review of the basics of working with the operating system and file types.
- Advanced algorithms: data sorting, searching, working with large data arrays.
- Programming: advanced use of functions, parameters, recursion and modularity (Python, JavaScript).

**Lesson 1: Reviewing the Basics of Working with the Operating System and File Types**

**Objective:**

To refresh knowledge about working with the operating system, file types and their organization.

**Lesson plan:**

**Repetition of working with the operating system**(10 min).- File system organization: directories, creating, copying, moving files.

**File types**(10 min).- Main types: text, graphic, audio, video, executable files. Their features and purpose.

**Practical work**(20 min).- Managing files and folders in the operating system, converting files from one format to another.

**Homework:**

Organize your filing system for your study materials by type and purpose.

**Lesson 2: Advanced Algorithms – Sorting Data**

**Objective:**

To study data sorting algorithms and their application in real-world problems.

**Lesson plan:**

**Introduction to data sorting**(10 min).- What is sorting, main types of sorting: bubble sort, quick sort, merge sort.

**Using sorts**(10 min).- How sorting works, its execution time, examples of use (including in real life).

**Practical work**(20 min).- Writing a program to sort arrays of data (in Python or JavaScript).

**Homework:**

Develop a program to sort an arbitrary set of data.

**Lesson 3: Data Mining Algorithms**

**Objective:**

To introduce the basic data retrieval algorithms, their application and efficiency.

**Lesson plan:**

**Search algorithms**(10 min).- Linear and binary search: differences, advantages and disadvantages.

**Using search**(10 min).- How search algorithms are used in everyday life (searching the Internet, databases, etc.).

**Practical work**(20 min).- Implementation of a program for searching for an element in an array using different algorithms.

**Homework:**

Implement a binary search algorithm for an ordered array.

**Lesson 4: Working with Large Data Sets**

**Objective:**

To teach how to work effectively with large data arrays using optimized algorithms.

**Lesson plan:**

**Problems of working with big data**(10 min).- Features of processing large data sets, complexity of algorithms.

**Optimization of data processing**(10 min).- Application of efficient methods for working with large volumes of data (data partitioning, buffering).

**Practical work**(20 min).- Writing a program to process a large array of data (for example, processing a list of students or products).

**Homework:**

Implement a program that processes big data using optimized algorithms.

**Lesson 5: Digging into Programming – Functions and Parameters**

**Objective:**

To study the use of functions and parameters in programming to create modular programs.

**Lesson plan:**

**Functions in programming**(10 min).- What are functions, why are they needed, how are they created and used.

**Parameters and return values**(10 min).- Using parameters and return values to make functions more general.

**Practical work**(20 min).- Create a program with several functions that take parameters and return results.

**Homework:**

Develop a program with at least three functions that use parameters for different calculations.

**Lesson 6: Recursion in Programming**

**Objective:**

To introduce the principle of recursion and its application in solving complex problems.

**Lesson plan:**

**Principle of recursion**(10 min).- What is recursion, when and why is it used.

**Examples of recursive algorithms**(10 min).- Factorial, Fibonacci number sequence and other problems solved with recursion.

**Practical work**(20 min).- Implementation of a recursive algorithm for solving a problem (for example, finding a factorial).

**Homework:**

Create a program with a recursive function to solve another problem (for example, a number sequence).

**Lesson 7: Modularity in Programming**

**Objective:**

To teach how to divide programs into modules to improve the efficiency and ease of development.

**Lesson plan:**

**The principle of modularity**(10 min).- What are modules in programming, why use them.

**Dividing the program into modules**(10 min).- Examples of modular programs, libraries and functions.

**Practical work**(20 min).- Developing a program using several modules (for example, a separate module for mathematical operations, working with files, etc.).

**Homework:**

Create a program consisting of several modules, each of which performs its own task.

**Lesson 8: Consolidation of knowledge and final work**

**Objective:**

To summarize the topics covered and check the level of assimilation of the material through a practical assignment.

**Lesson plan:**

**Discussion of the material covered**(10 min).- Brief overview of the topics, discussion of difficulties and achievements.

**Final task**(20 min).- Developing a program that involves the use of functions, parameters, recursion, and modules (e.g. sorting and searching data and displaying the results on the screen).

**Discussion of results and feedback**(10 min).- Analysis of completed work, discussion of results.

**Homework:**

Prepare a presentation on the completed project, explaining the algorithms and programming principles used.

These lessons will help students deepen their programming knowledge, master data manipulation, and prepare for more complex projects in the future.