SubjectsSubjects(version: 963)
Course, academic year 2020/2021
  
Advanced programming and technologies of programming - AP409011
Title: Advanced programming and technologies of programming
Guaranteed by: Department of Chemical Engineering (409)
Faculty: Faculty of Chemical Engineering
Actual: from 2019
Semester: both
Points: 0
E-Credits: 0
Examination process:
Hours per week, examination: 3/0, other [HT]
Capacity: winter:unknown / unknown (unknown)
summer:unknown / unknown (unknown)
Min. number of students: unlimited
State of the course: taught
Language: English
Teaching methods: full-time
Teaching methods: full-time
Level:  
Note: course is intended for doctoral students only
can be fulfilled in the future
you can enroll for the course in winter and in summer semester
Guarantor: Zubov Alexandr doc. Ing. Ph.D.
Grof Zdeněk doc. Ing. Ph.D.
Interchangeability : P409011
Examination dates   Schedule   
Annotation -
*** Seminars will be organized during both the winter and summer semesters (October to April). We ask all students who wish to participate in this course to contact the teachers before winter semester starts (middle of September) at the latest. Information about seminars will be send to all who have applied. *** Become familiar with basic programming technologies, data structures and algorithms. Learn to write clear and easily maintained computer programs. The course will focus on Fortran 90/95 programming language and its latest generations (Fortran 2003/2018). Generally become familiar with the characteristics and possibilities of other computer languages such as C/C++ and Python, for example, and techniques for interoperation of these languages. Become familiar with the concepts of paralelization (MPI and OpenMP).
Last update: Grof Zdeněk (08.07.2021)
Aim of the course -

The student will be able to

  • focus on the most important programming technologies

  • write concise, clear, and easily maintainable computer programs and use the programming handwriting

  • use modern Fortran programming language

  • read and understand programs written in C, C++, and Python

  • design and use complex data structures

  • analyze and implement algorithms for various purposes

  • parallelize programs by using the MPI

Last update: Grof Zdeněk (21.06.2022)
Course completion requirements -

Development of programming projects that will be handed out during the seminars.

A final discussion on submitted projects.

Last update: Grof Zdeněk (08.07.2021)
Literature -
  • Curcic M: Modern Fortran - Building efficient parallel applications, Manning, 2020.

  • Metcalf M, Reid J, Cohen M: Modern Fortran explained: icorporating Fortran 2018, Oxford University Press, 2018.

  • Clerman N S, Spector W: Modern Fortran: style and usage, Cambridge University Press, 2012.

  • Ray S, Fortran 2018 with parallel programming, CRC Press, 2020.

  • Horton I: Ivor Horton's Beginning Visual C++ 2013, Willey, 2014.

  • Hubbard J R: Programming with C++, Schaum's outline series, McGraw-Hill, 1996.

  • Chacon S, Straub B, Pro Git, Apres, 2014. [open source, available from https://git-scm.com/book]

  • Additional references from Internet (programming languages: manuals, tutorials, etc.)

Last update: Grof Zdeněk (21.06.2022)
Syllabus -

1. Introduction, data representation, programming in Fortran I.

2. Programming in Fortran II.

3. Defined data types in Fortran, pointers, arrays and linked-lists.

4. Abstract data structures (queue, stack), basic principles of object-oriented programming.

5. Recursion, sorting algorithms.

6. Binary search trees, graph traversal and path searching.

7. Fortran I/O, formatting.

8. Parallelization with MPI I.

9. Parallelization with MPI II.

10. Programming style, teamwork in software writing, version control systems (git and github).

11. Python (introduction and binding with Fortran programs).

12. C programming language (how understand programs written in C and their binding with Fortran).

Last update: Grof Zdeněk (26.04.2023)
Registration requirements -

Students with basic programming skills (programming in Fortran, C, Matlab, or Python, for example) and general knowledge of programming technologies and algorithms will have an advantage.

However, the course schedule will allow the students to catch up on their missing knowledge by a self-study or consultations.

Last update: Grof Zdeněk (21.06.2022)
 
VŠCHT Praha