Course syllabus PRT113D - Programming Techniques (VŠPP - SS 2019/2020)

     Czech          English          

Course code:
PRT113D
Course title in Czech:
Programming Techniques
Course title in English:
Programming Techniques
Mode of completion and number of credits:
Exam (3 credits)
Mode of delivery:
full-time, 2/2 (hours of lectures per week / hours of seminars per week)
part-time, 8/0 (lectures per period / seminars per period)
Language of instruction: Czech
Course supervisor:
Name of lecturer: RNDr. Michal Bejček, Ph.D. (supervisor)
Prerequisites: none
Annotation:
This course's aim is to introduce the student to the principles of programming and to other paradigms employed in applications development. The point is not to be able to create detailed precision programmes, but to understand the programmer's task while in the position of IT head and having to coordinage programmers' teamwork. The course will cover essential programmer's terminology / jargon and students will have the opportunity to try out the individual techniques during tutorials. The focus will be on less common programming techniques, e.g. logical and functional programming.
 
Course contents:
1.
Software projects: types, activities, typical problems and how to prevent them, libraries, analysis, team management, documentation, support, computer program creation and execution (allowance 0/0)
2.Syntax and semantics, syntax analysis, writing source code , input validation , IDE and its benefits, syntax highlighting , version control, software platform (allowance 0/0)
3.
Errors in programs : definition of error, causes, types of errors, the formal analysis of errors (halting problem), detecting errors, bug-tracking system (allowance 0/0)
4.
Programming paradigms: a history of programming languages, machine code, assembly language, unstructured programming, procedural programming, object oriented programming (OOP), declarative paradigm (allowance 0/0)
5.
Procedural programming: algorithm, variable, constant, data type identifiers, visibility and initialization of variables, method, "divide and conquer", recursion (allowance 0/0)
6.
OOP: the definition and benefits of OOP (components), object, class, instance, attribute, method, messaging, static attribute/method/class, constructor, destructor (allowance 0/0)
7.
OOP: inheritance, abstract methods/classes, encapsulation, early and late binding (virtual methods) (allowance 0/0)
8.OOP: analysis and design classes: abstraction, inheritance, composition (aggregation), association, class hierarchy, independence rules (Law of Demeter), consistency (allowance 0/0)
9.
Advanced options of imperative languages: polymorphism method overloading, templates, operator overloading, interfaces, namespaces, syntactic sugar, exceptions (allowance 0/0)
10.
Functional programming: motivation, strengths and weaknesses of functional languagesreferential transparency, Haskell: lazy evaluation, higher order functions (allowance 0/0)
11.
Logic programming: principles, applications, Prolog: objects, relationships, rules, queries, variables, depth-first search, clause proof tree (allowance 0/0)
12.CASE tools: types of CASE tools, functions of CASE tools, forward and reverse engineering (and synchronization), examples of CASE tools (allowance 0/0)
13.
Challenging topics repetition (allowance 0/0)
 
Learning outcomes:
Expert knowledge:
Student is able to:
explain the concepts discussed (their importance and potential relationships)
describe the process of software development, note typical problems in software development and ways to prevent them
explain the difference between syntax and semantics of the programming language
list the typical mistakes that are made in the program s code, and describe methods to detect errors
describe the various programming paradigms
explain the basic principles of object-oriented programming
explain the principles of functional and logic programming
list benefits of using CASE tools
Expert skills:
Student is able to:
divide the program into appropriate methods and link them together
propose an appropriate hierarchy of classes (by function or by data structures)
assess the level of interconnection of classes and class cohesion and suggest how to improve the situation
 
Input knowledge:
Student must know basic algorithms and programming basics.
 
Learning activities and teaching methods:
Attendance at tutorials is optional, but it is recommended. During tutorials will be discussed only the most important themes, it is necessary to study partial details from basic literature. Students can do self-study batches during the whole term. Unclear subject matters are possible to discuss in the consultation hours.
 
Rámcové podmínky zápočtu:
-- item not defined --
 
Rámcové podmínky zkoušky:
The exam is oral. Students will randomly select a topic and, after a short time for preparation, will be asked to respond. The purpose is to show the understanding of the topic.
 
Study load:
Type of teaching method
Daily attendance
Combined form
Lecture/tutorial attendance26 h8 h
Seminar attendance
26 h
0 h
Preparation for lectures/tutorials
0 h
26 h
Homework (self-study batches)0 h8 h
Preparation for an exam
26 h
36 h
Total
78 h
78 h
 
Recommended reading:
Basic:
PALETA, P. Co programátory ve škole neučí aneb Softwarové inženýrství v reálné praxi. Brno: Computer Press, 2003. 0 ISBN 80-251-0073-1.
KEOGH, J. -- GIANNINI, M. OOP - Objektově orientované programování bez předchozích znalostí: Průvodce pro samouky. Computer Press, 2006. 0 ISBN 80-251-0973-9.

Recommended:
HEROUT, P. Učebnice jazyka JAVA. České Budějovice: Kopp, 2010. 386 p. ISBN 978-80-7232-398-2.
CHEUNG, K W. Vývojářův kód: poučte se z chyb jiných: pro všechny (pracující s) programátory. 1st ed. Brno: Computer Press, 2013. 200 p. ISBN 978-80-251-3786-4.


Last modification made by Lucie Ptáčková, DiS. on 03/09/2020.

Type of output: