COURSE AIMS AND OBJECTIVES: The aim of this course is to develop understanding of the algorithmic way of thinking, with emphasis on algorithmic problem-solving. The students will get acquainted with some basic algorithms and problems arising in their implementation due to finite-precision arithmetic. The student as a user, not as a programmer, should understand the possibilities and the limitations of computers. This course does not teach a specific programming language, but serves as an introduction to programming on the level of algorithmic problem-solving.
COURSE DESCRIPTION AND SYLLABUS:
1. Algorithms. The notion of an algorithm and fundamental properties of algorithms. Simple examples of algorithms in every-day life and in mathematics.
2. Ways of writing algorithms.
3. Introduction to pseudo-language. Basic data types and instructions (numbers, the Boolean type, characters, arithmetic, expressions, assignment). Input and output. Instructions for flow control and loops. Composite data types, arrays and strings.
4. Simple algorithms. Solving quadratic equations, finding the intersection of lines, finding minima and maxima, working with arrays, basic sorting etc.
5. Demonstration of errors. Errors arising in computer implementations of algorithms as a result of limitations of the representation of numbers and rounding errors.
6. Number systems and the representation of numbers in a computer. Explanation of the errors.