Section outline

  • Lesson 9Introduction to the Basics of Programming

    Objective: involves hierarchical learning of knowledge from basic terminology and software classification to the ability to analyze the evolution of programming paradigms and languages.

    At the lowest level, Knowing/Remembering, the student must define the concept of software (software) and programming languages, list the three main classes of software (system, application, software development tools), and name the three types of control structures used in structured programming (sequential execution, branching, looping). The next level, Understanding, requires the student to explain the differences between declarative (what?) and imperative (how?) programming, interpret Wirt's formula "algorithms + data structures = programs", and formulate the essence of the principle of program modularity. The Applying level (3) requires the student to demonstrate practical application of knowledge, including applying the principles of structured programming to explain (analyze) how to avoid "BS programs" (bowl of spaghetti), using the concept of bytecode and the JVM to explain the mechanism of cross-platform portability of the Java language, and providing examples of programming languages ​​for each of the three main imperative paradigms (procedural, object, object-oriented). The fourth level, Analyzing, requires the student to compare the approaches of Pascal (standardization of the virtual machine) and C (flexibility of hardware use) to the computing environment, distinguish between procedural and object-oriented programming (OOP) as technologies (algorithmic component versus structured data organization), and analyze the relationship of C# to C, C++, and Java, and its role in solving the problem of interlanguage interoperability. At the fifth level, Evaluating, the student must justify the importance of a high degree of module independence to reduce the "ripple effect" and increase program reliability, criticize the concept of Fortran for the lack of conditional loops, which hindered support for structured programming, and evaluate the role of Anders Heijlsberg in creating C# based on existing "fundamental" languages. At the highest level, Creating, the student must design an architectural solution that combines multi-paradigmism to solve a complex problem (for example, a combination of functional and object-oriented approaches, as supported by Python), and design a set of properties for a new software module that maximizes its independence.