Национальный исследовательский университет «Высшая школа экономики»
Программа дисциплины «Информатика и программирование»
для направления 01.03.04 «Прикладная математика» подготовки бакалавров
The Government of The Russian Federation
Federal State Autonomous Educational Institution
of Higher Professional Education
National Research University Higher School of Economics
Moscow Institute of electronics and mathematics
Department of Applied Mathematics
Syllabus for
Computer Science and Programming
for directions 01.03.04. Applied mathematics bachelor
Course Instructors:
Andrey Vnukov, D.-Eng. (module 1), avnukov@hse.ru
Sergey Aksenov, Ph.D. (module 2-4), saksenov@hse.ru
Approved at the meeting of the Department of Applied mathematics "_____" ____________ 2015 year
Head of Department A. V. Belov ________ [signature]
Recommended by Academic Council of educational program
"______" ____________ 2015 year, No. Protocol_________________
Approved "___" ____________ 2015 year
Academic head of the educational program
Manita L. A. _________________ [signed]
Moscow, 2015
This program cannot be used by other divisions of the University and other universities without the permission of the Department-developer of the program.
Scope and normative references
This program of academic discipline establishes minimum requirements for knowledge and skills of the student and determines the content and types of studies and reporting.
The program is designed for teachers, leading this discipline, teaching assistants and students in the areas of training 01.03.04."Applied mathematics", studies the discipline of computer science and programming.
The program is designed in accordance with:
The Federal State Educational Standard (FSES) for the degree of bachelor 01.03.04."Applied mathematics", training - bachelor;
Educational program 01.03.04."Applied mathematics" bachelor.
Working curriculum of the University in the direction 01.03.04."Applied mathematics" bachelor approved in 2015.
Goals of learning
The purpose of learning computer science and programming are:
Acquaintance of students with the discipline of the basics and terminology of low-level programming in Assembler language and object-oriented programming;
Acquaintance of students with the discipline of the basics and terminology of low-level and object-oriented programming. Understanding the capabilities and features of Assembler language and object-oriented programming languages in designing, developing and debugging computer programs;
The use of compatible systems programming. The embed program sections in Assembly language low level program to high level language;
Learn basic principles of low-level and object-oriented programming used in the development and implementation of algorithms, creating and debugging computer programs;
The formation of practical skills of application development in a programming language Assembler and C++.
Competence of the learner, formed as a result of learning the discipline
As a result of mastering discipline student must:
Know paradigm and programming methodology, features of Assembler language and object-oriented programming languages, the most widely used programming tools; concepts, syntactic and semantic organization, methods of using modern object-oriented programming languages; theoretical and methodological foundations to understand the functionality in the area of information systems development;
Be able to apply in professional activity the Assembler language and modern object-oriented programming languages; to solve problems professionally manufacturing and technological activity taking into account modern achievements of science and technology, including: the development of algorithmic and software solutions in the field of system and applied programming; development of mathematical, information and simulation models on the subject of the performed research;
Possess basic mathematical knowledge and information technologies, to apply them efficiently to solve scientific and technical problems and applied problems associated with the development and use of information technology.
To have skills (to gain experience) formulation of mathematical and information at, cottages, development of technical specifications for software design, applications of mathematical methods to the solution of practical problems, describe algorithms, develop code in languages Assembler and C++, software testing, selection and analysis of materials on the same topic, presentation and protection of the results.
As a result of mastering the discipline a student masters the following competences:
-
competence
|
Code* in the FSES/ NRU
|
Descriptors – main features of development (indicators of result achievement)
|
Forms and methods of training, contributing to the formation and development of competence
|
Able to solve problems in professional activity on the basis of analysis and synthesis
|
UC-3**
|
Selection and analysis of materials on the same topic. Yourself wrote the program on the instructions of the teacher
|
Lectures, practical classes, independent work, homework
|
Able to assess the need for resources and plan their use in solving problems in the professional activity
|
UC-4
|
Proficient in the development of algorithmic and software solutions using modern technologies of programming
|
Lectures, practical classes, independent work, homework
|
Able to work with information: find, evaluate and use information from various sources necessary for the decision of scientific and professional tasks (including on the basis of system approach)
|
UC-5
|
Uses modern standard development environment (IDE) while creating and debugging software products
|
Lectures, practical classes, independent work, homework
|
Able to conduct research, including problem analysis, setting goals and objectives, the allocation of the object and subject of study, choice of method and research methods, as well as evaluating its quality
|
UC-6
|
Understand the stages and steps of software development. Demonstrates knowledge of modern programming languages of low and high level
|
Lectures, practical classes, independent work, homework
|
Able to design and develop software components based on modern paradigms, technologies and programming languages
|
PC-4***
|
Develops the technical specification for the software component using programming languages of low and high level
|
Lectures, practical classes, independent work, homework
|
Able to apply knowledge of the life cycle of modern projects for the development and operation of software systems and tools for the management of projects in the field of Information technology
|
PC-8
|
Demonstrates knowledge of modern programming languages
|
Lectures, practical classes, independent work, homework
|
Able to use and develop mathematical modeling techniques and apply analytical and scientific application packages
|
PC-11
|
Uses modern standard development environment (IDE) while creating and debugging software products
|
Lectures, practical classes, independent work, homework
|
* Federal State Educational Standard (FSES)/ National Research University (NRU);
**(UC-3): Universal Competencies - 3
*** (PC-4): professional competence - 1.
Course Description
Computer Science and Programming is a compulsory two-semester course for the second year students studying at FAMC specializing in direction of training Applied Mathematics (01.03.04.)
The course aims to provide insights into low-level programming in assembler and object oriented programming basics focusing on C++ application development. The emphasis of the course is on the practical application of the main object oriented programming concepts (Abstraction, Encapsulation, Inheritance, Polymorphism).
Pre-requisites
The students are supposed to be familiar with basics of algorithms and computer programming in C.
Learning Objectives
The objectives of the Computer Science and Programming course are:
• To acquaint students with low-level and object-oriented programming basics and terminology as well as with capabilities of object-oriented languages;
• To study the language Assembler and object oriented concepts and their implementation in software development;
Learn basic principles of low-level and object-oriented programming used in the development and implementation of algorithms, creating and debugging computer programs;
• The formation of practical skills of application development in a programming language Assembler and C++.
Learning Outcomes
As a result of study, the student should be familiar with object-oriented terminology, object-oriented concepts and the ways of their application in software design.
The student should be able to develop software solutions for the variety of problems using object-oriented concepts, C++ libraries and developer tools for Windows programming.
Students should acquire basic skills and knowledge of object-oriented programming and be able to apply them in practice.
Place of discipline in the structure of the educational program
Discipline refers to professional cycle (B. 3) and the block of disciplines providing the basic (General professional) training.
The study of this discipline is based on the following disciplines:
Algorithmic and programming (1th year);
Computer workshop (1th year);
Languages and programming techniques;
Workshop on the computer.
For the development of the discipline, students should posses the following knowledge and competencies:
To know the basics of programming in language C.
Know basic methods and algorithms of processing of information structures, methods of analysis of complexity of algorithms;
The main provisions of the discipline should be used further in the study of the following subjects:
The main provisions of the discipline and mastered the competence (UC -3, UC -4, UC -5, UC -6, PC -4, PC -8, PC -11) should be used for further studying of disciplines:
Operating systems and computer networks (3rd year);
Numerical methods (3rd year);
Mathematical modeling (3rd year);
Interdisciplinary coursework (3rd year);
Industrial practice (3rd year);
Programming for the Internet (Web-programming) (4th year);
Simulation modeling (4 year);
Numerical methods (4th year);
Control theory (4th year);
Computer graphics (4th year);
Database (data management) (4th year);
Basics of Web programming.
Thematic plan of the discipline (Distribution of hours)
№
|
Topic
|
Total hours
|
Contact hours
|
Self-study
|
Lectures
|
Seminars
|
Practical Classes
|
|
Generation of programming languages
|
7
|
2
|
|
1
|
4
|
|
The architecture of the microprocessors of the command system of IA-32 and IA-64
|
22
|
8
|
|
4
|
10
|
|
Programming in Assembler language
|
26
|
8
|
|
4
|
16
|
|
Introduction to C++ programming.
|
13
|
4
|
|
1
|
8
|
|
Introduction to STL.
|
18
|
6
|
|
4
|
8
|
|
User defined data types.
|
18
|
6
|
|
4
|
8
|
|
Inheritance, virtual functions, polymorphisms
|
38
|
12
|
|
6
|
20
|
|
Windows programming basics
|
20
|
6
|
|
4
|
10
|
|
User interphase components
|
18
|
6
|
|
2
|
10
|
|
Document-View architecture
|
18
|
6
|
|
2
|
10
|
|
C++ templates
|
14
|
4
|
|
2
|
8
|
|
Debugging in Visual Studio. Exceptions.
|
14
|
4
|
|
2
|
8
|
|
Multithread programming with MFC
|
14
|
4
|
|
2
|
8
|
|
Total:
|
228
|
72
|
0
|
36
|
120
|
Forms of control of knowledge of students
The type of control
|
control form
|
1 year
|
Parameters **
|
1
|
2
|
3
|
4
|
|
Current (week)
|
homework
|
1
|
|
1
|
1
|
The creation of the program in the IDE and the protection of its text, 80 minutes
|
intermediate
|
credit
|
|
*
|
|
|
The creation of the program in the IDE and the protection of its text, 80 minutes
|
final
|
exam
|
|
|
|
*
|
The creation of the program in the IDE and the protection of its text, 80 minutes
|
6.1. Evaluation Criteria knowledge and skills
Homework: The student must demonstrate the ability to transfer data from one positional numeral system to another and to develop a program in Assembly language on a pre-issued to the job of teacher and defend it in the survey on practical lessons. UC-3, UC-4, UC-5, UC-6, PC-4, PC-8, PC-11.
Credit: The student must demonstrate the ability to translate data from one positional number system to another, create computer programs and knowledge of OOP principles within the sections 1 - 3. Competencies: UC-3, UC-4, UC-5, UC-6, PC-4, PC-8, PC-11.
Exam: the Student must demonstrate the ability to create computer programs and knowledge of OOP principles within the sections 1 and 13. Competencies: UC-3, UC-4, UC-5, UC-6, PC-4, PC-8, PC-11.
Homework: the Student must demonstrate the ability to develop a program on a pre-issued to the job of teacher and defend it in the survey.
Credit: the Student must demonstrate the ability to create computer programs in C++ information on topics 4-13. Competencies: UC-3, UC-4, UC-5, UC-6, PC-4, PC-8, PC-11.
Exam: the Student must demonstrate the ability to create computer programmes and knowledge of OOP principles within the 4-13. Competencies: UC-3, UC-4, UC-5, UC-6, PC-4, PC-8, PC-11.
Assessment in all forms of current control are set on a 10-point scale.
The inspection should be carried out in a computer class installed with the IDE.
6.2. Grading System and Assessment
There are the following forms of control:
-
Home assignments;
Current control at lectures and practical classes
Exams at the end of modules 1(intermediate) and 4(final).
The intermediate grade (1st module) is comprised of:
Exam at the end of module (50%);
Home assignments and current control of 1st module (50%).
The cumulative final grade is comprised of:
-
Final exam (50%);
Home assignments and current control of 2nd, 3rd, 4th modules (40%).
Intermediate grade (10%);
Content of discipline (Course Plan)
№
|
Наименование раздела дисциплины
|
Содержание раздела
|
Аудиторная работа
|
Самостоятельная работа
|
Литература к разделу
|
|
Generation of programming languages
|
A programming language (program, syntax, semantics). Levels of programming languages (low, intermediate, high). Generation programming languages by the level of abstraction of the specific type of hardware (1 machine, 2 assemblers, 3 procedural, object-oriented, hybrid, domain-specialized, declarative, 4 scripting, descriptive, 5 logical, functional languages). Classification of programming languages depending on the programming paradigm, the degree of abstraction of circuit performance. Common programming languages. The most important programming languages. Pedigree of the most important programming languages and their descendants.
|
2
|
10
|
[1,3]
|
|
The architecture of the microprocessors of the command system of IA-32 and IA-64
|
Structural diagram of a personal computer. The software model of the microprocessor available for programming in the language. The architecture of microprocessors IA-32 (main devices). RISC– and CISC–processors (groups of instruction set). Modified von Neumann architecture. Architecture long command word (VLIW). Registers (General purpose, segment, offset, control and status, debugger, page, flags). The status register processor. Memory structure IA-32. Memory model: Flat Model, Segmented Model, Real-address Mode Model. Common bus (multiplexed, separate, Harvard, super Harvard with the matrix switch). The data transmission channels. The data transfer protocols. Direct access channels to the memory. External device.
The System of instruction set IA-32 (format and a group of instruction set IA-32). Hardware compatibility of the processor architectures of Intel number of "bottom-up" (commands, registers, memory). The emulator commands. Virtual machine.
Compatibility systems programming. The embed program sections in Assembly language in a program in high level language. Description, redundancy and addressing blocks and data.
A group of instruction set. Conditional and unconditional jumps. Cycles. Repeat a string of instruction. Return from CALL. The comparison operation. The mathematical operations. Logical operations. Memory operations. Operations with flags of the processor. Working with BCD numbers.
Principles instruction set of IA-64 (Intel). Comparison instruction set of IA-64 and traditional architectures. The microarchitecture of Intel Itanium 2 processors.
Registers of the x86 architecture.
Instruction set x86-64 architecture. Combining instruction set into groups of instruction set of x86 architecture.
Principles of x86-64 (AMD). Comparison of architectures: x86-64 vs IA-64.
The principle of operation of x86-64. Expansion of registers of the architecture x86-64.
Description of the core representatives of the x86-64 architecture.
Combining instruction set into groups of instruction set architecture x86-64.
Comparison chart Intel and AMD processors 16-, 32-, and 64 - bit architectures. Evolutionary transistor chart showing the architecture. Transistor evolutionary chart "Intel" to compare with the chart "AMD".
|
8
|
20
|
[1-4]
|
|
Programming in Assembler language
|
The classical approach to software development. The computing model supported by the Assembler language. Formulation development program in Assembler language: the known model of hardware to develop a local area computing model. General formulation of the software development in Assembler language: the known set of instruction, hardware, local area computing model algorithm to implement the software.
The General structure of program in Assembly language. The syntax of the assembler. The format of instructions and macros.
Operands (permanent/direct, address moved, an address counter, register, base, index, structural, writing).
Operators (arithmetic, shift, comparison, logical, index, override type override segment naming structure type, making segment component of the address expression, the offset of the expression).
Segmentation directives (standard and simplified).
Data types (immediate, simple, complex). Physical and logical interpretation of data. Directive of the description of data of simple types. Attributes of simple data types. Complex data types (arrays, structures, unions, records).
Tools macro Assembler. The macro assembler in the General scheme of compilation of programs. The Macro Instructions. The syntax for macro definitions (in the beginning of the source text in a separate file in the macro library). The context of macro definitions (actual and formal arguments). The process and the result of the substitution arguments (macro generation and macro expansion). Comments. Macro directives (amendments, modification, repetition of lines). Error messages.
|
8
|
20
|
[4-6]
|
|
Introduction to C++ programming.
|
Namespaces .
Input/Output in С++.
Increment and decrement operations. Pointers and increment/decrement operations.
References.
Memory allocation in C++.
Constants and macros.
|
5
|
8
|
[1,2]
|
|
Introduction to STL library
|
Classes and objects.
Strings and arrays in STL.
STL containers and iterators.
Operations with STL objects.
Type conversation.
|
10
|
8
|
[1,2]
|
|
User defined data types.
|
User defined classes.
Using composition in C++.
Initialization of class members (Default constructor, constructor with parameters).
Destructor.
Copy constructor. Ways of passing an object to a function.
Operator overloading.
Static members. Constant members. Class method overloading.
|
10
|
8
|
[1,4]
|
|
Inheritance, virtual functions, polymorphisms
|
Access specifiers: public, protected, private.
The concept and mechanisms of inheritance.
Inheritance or composition - Pros and Cons.
Virtual functions and polymorphisms.
Pure virtual functions and abstract classes.
Accessing to an object throughout a pointer.
Type casting and objects.
Indirect base classes.
Virtual destructor.
Multiple inheritance.
|
18
|
20
|
[1,2]
|
|
Windows programming basics
|
Function WinMain.
Message loop and message handling.
Smallest Windows application.
Introduction to MFC.
CApp class.
Basic MFC components.
Window classes in MFC.
Basic window messages.
Graphical Device Interphase (GDI).
|
10
|
10
|
[1]
|
|
User interphase components
|
Creating window menus.
Creating window toolbars.
Controls (buttons, textboxes, lists, etc.)
|
8
|
10
|
[1]
|
|
Document-View architecture
|
SDI and MDI concepts.
Using MS Visual Studio to create SDI and MDI applications.
Creating different views for single document.
View notifications.
Serialization.
|
8
|
10
|
[1]
|
|
C++ templates
|
Generic programming basics.
Creating of function templates.
Creating of class templates.
Template parameters.
Inheritance and templates.
|
6
|
8
|
[1,2]
|
|
Т Debugging in Visual Studio. Exceptions.
|
Program tracing in Visual Studio.
ASSERT, VERIFY and TRACE macros.
Exceptions. Throwing and catching of exceptions.
|
6
|
8
|
[1,2]
|
|
Multithread programming with MFC
|
Creating of working threads.
Creating of interphase threads.
Synchronization.
Terminating threads.
|
6
|
8
|
[1]
|
|
Total:
|
|
108
|
120
|
|
Classes are held in computer class in an interactive form and includes discussions on current tasks and solving problems on the computer.
-
Educational technology (Methods of Instruction)
Lectures should be held in classrooms provided with computer and projection equipment.
Practical classes should be held in computer classrooms equipped with the necessary software (i.e. programming) and will include discussions on current tasks and solving problems on the computer.
Students are given different types of tasks.
As a basic template for assignments computer practicum is one option.
Option 1.
A1. a) 4302 b) 79h C1h
A2. ; x = –2h, y = 3h, z = 1h, = –Fh; x = 2Eh, y = 7Fh, z = –FBh, = –8h; x,y,z – byte – word
A3. Given a string of four decimal digits. If the remainder of the division of works of the first and second digit to the fourth digit equals the third digit, replace the third digit of the corresponding capital letter ('0' — 'A', '1', 'B', etc.), otherwise — swap ultra numbers.
A4. Given arrays a and B of 16 bytes. If elements with the same numbers differ by 1 (the number sign), these elements in the B array, replace the elements with the opposite sign (element, replacement of which can cause the overflow, replaced by zero). The address of the modified items to write to the Count array C. the number of such elements.
One of the educational technologies applied in this computer workshop is the incorporation of program sections in Assembly language into a program in a high level language. Translators assembler MASM and TASM and compiler Visual C++ 2010 support segmentation when developing programs.
|