Midterm / forming exam: December 1, 2017 » RESULTS ( A+B+C )
An additional test (for those who were absent) will be on Tuesday, December 12th, at 14:00 in lab. 127P/C3
Final exam: January 19, 2018 Selection of additional resources for training & repetition before final exam.
Learning the basic programming constructs which are common to most of algorithmic languages:
types, variables, conditional branching, looping, functions with arguments, recursion, arrays, lists, files.
Getting acquainted with selected forms of dynamic and complex data structures: list, stack, queue and tree.
Acquiring the ability of the structural and procedural programming in C or C++,
using the integrated development environments to improve the processes
of editing, compiling and testing multi-file programming projects.
Acquisition of basic knowledge on computer algorithms, how they are presented and analyzed.
Getting familiar with standard algorithms processing large amounts of data, i.e.: searching, aggregating and sorting.
Development of the knowledge in the area of information technologies and improving the skills in its use in engineering work.
Teaching materials for the
LECTURE-01 The algorithms and methods for their representation. The flowcharts.
The stages and tools used during software development. Standards of programming languages.
The overall structure, syntax and semantics of the program in C or C++.
Examples of source code for simple console applications. Slides: L01 - Introduction (PDF)
data and their representations. Data types and ranges of values.
Program variables, variable declaration and initialization. The
visibility of identifiers. Storage classes. Predefined scalar types and
user defined types (typedef). Logic, bitwise and arithmetic operators.
Rules for calculation of algebraic expressions. The standard
mathematical functions. Dealing with streams and basic input/output
operations. Dialogue with the user in text mode. Formatted input and
output using standard libraries <stdio.h> <iostream>.
Slides: L02 - Input/Output, if/else, switch (PDF) ;
Online printf and scanf documentation (from Cplusplus portal)
Basic programming instructions: assignment, conditional selection and
choice. Controlling the flow of the algorithm, folding and nesting
conditional instructions. Examples of algorithms that process small
amounts of data (without using a loop). The concept of iterations in
the program. The types of loops: while, do-while, for. Terms of
completion and nesting the loops. Instructions to break or continue the
loop. Simple iterative algorithms: counting, searching the minimum or
maximum, summing up the data values retrieved from the stream.
Slides: L03 - Loops (PDF)
in C/C++. Array declaring, defining and indexing. Processing array data
using a loop. One-dimensional and multi-dimensional arrays.
Slides: L04 - Arrays (PDF)
and procedures in programming languages. Declaring, defining and
invoking the function. Parameter-less functions. Explicit passing of
the data via the argument list or the return statement. Passing
arguments by value and by reference. Default values for arguments.
Overloaded functions. Inline functions. Recursion.
Slides: L05 - Functions (PDF)
representation of strings in C/C++. Declaring, defining, and
manipulating the strings. Standard C library <string.h> (strcpy,
strcmp, strcat, strlen, etc.).
Examples of user-defined functions for
processing textual data. (Recursion and recursive algorithms. Binary search and sorting of the arrays.)
Slides: L07 - Strings - Char Arrays (PDF)
LECTURE-08 Computer memory addresses, pointers to variables and memory,
pointers arithmetic in C/C++. The relationship between pointers and
arrays. Working with arrays using the pointer notation i. Passing
arguments to the function by address. Standard C functions which
operate directly on computer memory <mem.h> (memset, memcpy,
memcmp, memmove, etc.)
Slides: L08 - Pointers
Dynamic memory allocation. Allocating and freeing the allocated memory
(malloc, calloc, free, new and delete operators). Heap overflow and
dynamic data corruption. Dynamic allocation and reallocation of arrays
of a specified size.
Slides: L09 - Dynamic memory allocation
type - the concept of structures in C/C++. Definition, declaration and
initialization of structural variables. Nesting of composite types
(structures and arrays). An example of a simple in+memory database
using the representation in the form of arrays of structures.
Slides: L10 - Struct
Support for external memory in the form of raw data files. Random
access and text files. Procedural <stdio.h> and object-oriented
<fstream> <stream> libraries for standard file operations.
Input and output operations for the characters, strings and formatted
data. Binary data - block files. Portability of the data representation
between different operating systems. Standards for exchange data files
between applications written in C/C ++ and popular office suites
Slides: L11 - Files
The complex pointer data structures. The array of pointers to simple
variables, array of pointers to arrays, dynamic array of pointers to
dynamic strings. Pointers to functions. Standard qsort function.
Dynamic and recursive data structures: the pointer-driven list, stack,
queue, priority queue, binary tree, and their properties.
LECTURE-15 Final exam.
 Brian Kernighan, Dennis Ritchie, The C Programming Language, 1988
 Greg Perry, Dean Miller, C Programming Absolute Beginner's Guide, 3rd Edition, 2013
 Bjarne Stroustrup, The C++ programming language, 4th ed., 2013
 Stanley Lippman, Josée Lajoie, C++ primer, 5th ed., 2013,
 Niklaus Wirth, Algorithms + Data Structures = Programs, 1976
 Robert Sedgewick, Algorithms in C, 3rd Edition, 2001
 K.N. King, C Programming: A Modern Approach, 1996
 Dan Gookin, C for Dummies, Volume 1, 1994
 Alex Allain, Jumping into C++, 2013