Charles Explorer logo
🇬🇧

Programming I

Class at Faculty of Mathematics and Physics |
NPRX030

Syllabus

a) Basic algorithms, data structures and programming techniques

- basic notions of algorithmic efficiency

- divisibility, Euclid's algorithm

- primality testing, the sieve of Eratosthenes

- Horner's rule

- dividing an integer into digits, positional notation for numbers

- array search algorithms (sequential, binary, sentinel)

- sorting data in an array (internal sorting)

- basic matrix operations

- implementing stacks and queues using an array

- higher-precision arithmetic ("long numbers")

- recursion, backtracking, divide and conquer

- depth-first search and breadth-first search

- the minimax algorithm

- heaps and heap operations

- factor sets

- dynamic data structures, linked list operations

- binary search trees, balanced binary trees (AVL trees)

- multiway binary trees (B-trees)

- representing and evaluating arithmetic expressions

- external sorting b) Typical programming language elements and mechanisms, as exemplified in the Turbo Pascal language

- variables, constants, types, variable initializers

- primitive and compound data types (numbers, characters, booleans, enumerated types, arrays, lists, strings of symbols)

- simple and compound statements (assignment, if, while, repeat, for, case, with)

- text files (including formatted output)

- procedures and functions (local identifiers, parameter passing mechanisms, recursion)

- the goto statement

- pointers and dynamically allocated data

- basic compiler directives (memory limits, run-time checks) c) Working with an IDE (integrated development environment), creating and debugging programs - practically demonstrated using the Turbo Pascal or Free Pascal IDE (editor, compiler, debugging tools - tracing, examining variable values etc.)

Annotation

A first course about programming and algorithms for first-year students studying computer science and computer science education. The course covers principles of algorithms, basic algorithms, data structures, programming techniques, typical programming environments and practical program design and debugging.