Prerequisits



Content (Syllabus outline)


Introduction: basics of syntax and semantic of highlevel programming language, algorithm, von Neumann computer, variable, assignment, simple program examples.
Types and expressions: primitive data types, expressions and operators.
Control structures: choices, repetitions, structured decomposition.
Functions: subroutines, parameter passing by value, parameter passing by reference, function overloading.
Algorithms and problemsolving: problem solving strategies, role of algorithms in the problem solving process, concepts and properties of algorithms.
Algorithm design: pseudocode, implementation strategies for algorithms, functions, testing, debugging.
Arrays: search algorithms, array sorting, array passing into function.
Structure and pointers, userdefined data structures, data representation in memory, strings and string processing.
Pointers and references: pointer to a structure, reference, runtime storage management.
Dynamic data structures, linked list.
Recursion: recursive mathematical functions, implementation of recursion, algorithms, dynamic data structures, tree. 
Readings


• V. Žumer, J. Brest: Strukturirano programiranje v C++, 2. izdaja, Univerza v Mariboru, Fakulteta za elektrotehniko, računalništvo in informatiko, Inštitut za računalništvo, Maribor, 2002.
• S. Prata: C++ Primer Plus, Sixth Edition, Addison Wesley Professional, Indianapolis, 2011.
• S. Sahni: Data Strutures, Algorithms, and Applications in C++, Second Edition, Silicon Press, Summit, NJ, 2005.
• P. J. Deitel, H. M. Deitel: C++ How to Program, Ninth Edition, Prentice Hall, New Jersey, 2013.

Objectives and competences


The objective of this course is to learn students with algorithmic thinking and structure programming. 
Intended learning outcomes  knowledge and understanding


On completion of this course the student will be able to
demonstrate knowledge and understanding of the structure programming,
understand and demonstrate knowledge of C++ programming language syntax,
demonstrate understanding of fundamental principles of problem analysis, design, coding, and testing of computer programs,
create algorithms for solving simple problems,
demonstrate knowledge and understanding of basic algorithms and data structures.

Intended learning outcomes  transferable/key skills and other attributes


Communication skills: oral lab work defence, manner of expression at written and oral examination.
Use of information technology: use of software tools and scripts to automate routine tasks in system administration.
Problem solving: designing, coding, testing programs.

Learning and teaching methods


• lectures,
• tutorials,
• lab work.
