R. Pecinovsky, J. Pavlickova

University of Economics, Prague (CZECH REPUBLIC)
Since the beginning of programming the abstraction level in which programs are designed is constantly increasing. We came from the machine code through assemblers to higher programming languages followed by ever more intensive using of various libraries and frameworks. Last time also using of various code generators increased. They enable to free from details and focus above all to the proposed program architecture. Majority of contemporary introductory textbooks and courses of programming do not respect these trends and continue to teach how to code the designed program in the selected programming language.

The constructivist learning theory declares that our knowledge arises by interacting of the newly received information with the existing knowledge and experience. Thus, learning something that does not correspond exactly to the existing student experience, they often unknowingly accommodate the received information to their previous experience and remember something different than the teacher says.

Experience unfortunately proves the truth of this idea. The students who passed the standard introductory courses focus above all to the proper coding. When they lately meet the architecture design, they are not able to get rid of their previous experience and propose at first (at least in their thoughts) their program code deriving its architecture design from this code.

The Architecture First methodology tries to apply the trends in programming development and approaches to teaching of programming in courses for the beginners in a different way. The first teaching phase explains the basics of the architecture, creating the program itself by the code generator built in the used development environment. Thus the students may focus at the architecture design and they are not distracted with the problems of the coding in the syntax of the used programming language. Contrarily, they immediately can see how much the designed architecture program is functional and which design part should be modified. The students learn creating even relatively complex programs in this phase without learning the syntax of the used programming language. Thus the teaching may be unified independently to which language the students will choose in the next phase. The objective of this phase is so that the students would become acquainted with the primary project design in its architecture level.

The rules of recording the program in code are explained only in the second teaching phase when the needs of the designed programs overstep abilities of the currently used code generator. Students learn the used language syntax at the example of their own programs created by the code generator in this phase. At the same time they repeat the previously explained architectonic constructions.

The third teaching phase explains the constructions behind the limits of the used code generator abilities, while for creating simpler program parts the students may again use the code generator. They are always led to the idea that the architecture design is primary and that the necessity of particular code record is only the consequence of the existing disability of the used generator.

The paper analyzes in details the contemporary state of teaching according to this methodology as well as the characteristics of currently used development tools.