Advanced general purpose programming with object oriented methods and the Python programming language, and advanced use of complex data structures. Introduction to MPI parallel programming and server side network programming. Application to the development of integrated software with graphical user interface, complex numerical methods and graphs. Interpreted and compiled programming languages. Development of fast binary code with object oriented Fortran 2003 and parallel Fortran 2008.
# | Title | Description | Hours |
---|---|---|---|
1 | Introduction to Python | Introduction to the necessary tools, show case of tools' installation, introduction to Python, variables, expressions, scalar types, conditional execution. | 1Χ3=3 |
2 | Loops, functions, and array and matrix arithmetic | Loops, generators, flow control commands. Array and matrix arithmetic. Function definitions and calls. Input and output arguments. Default arguments. Variable number of arguments. Applications. | 1Χ3=3 |
3 | Complex data types & object oriented programming | Pyzo integrated environment. Variables, tuples, lists, sets, dictionaries. Examples. Classes and objects. Python built-in objects. Methods and members. Inheritance. Polymorphism. Examples. | 1Χ3=3 |
4 | Runtime error manipulation and exceptions | Error propagation in nested functions. Error control with exceptions. Exception types. Raising Exceptions. Debugging with Pyzo. Examples. | 1Χ3=3 |
5 | Creation and manipulation of numerical data | Matrix computations and numpy. Scientific computation with scipy. Complex graphs with matplotlib. Compatibility with Matlab. Examples. | 1Χ3=3 |
6 | Graphical user interface (GUI) | Tkinter graphical user interface. Master window. Widgets. Display and input of text. Fonts. Geometry manager - grid. Menu. Displaying error messages. GUI and object oriented programming. Examples. | 1Χ3=3 |
7 | Graphical user interface (GUI) 2 | GUI and logic separation. Read and write files with GUI. Drawing of vector graphics, lines, circles etc. Automatic geometry resizing. Multi-line text. Scrollbars. Widget containers. New classes of widgets. Multiple windows. | 1Χ3=3 |
8 | Introduction to parallel programming | Serial and parallelizable computations. Parallel system architecture. MPI parallel system. Execution of same code instances in multiple cores. Execution differentiation with Rank. Instance communication with send/recv. Broadcast and Reduce. Examples. | 1Χ3=3 |
9 | Generators and paths | Generator expressions. Generators. Nested generators. Built-in generators and generator expressions. File paths. Directory paths. Unified use in Windows, Linux, MacOS. Path methods. Nested paths. Examples. | 1Χ3=3 |
10 | Introduction to Internet programming | Internet, WWW, HTTP, URL. Clients and servers. Links. Brief description of HTML. Creation of server with Python bottle. Assigning web pages to functions. Grouping of web pages. Printing HTML from functions. Examples. | 1Χ3=3 |
11 | Introduction to Fortran | Interpreters and compilers. Advantages and disadvantages. Fortran variables. User defined and platform independent precision. Flow control commands. Matrices and multidimensional arrays. Matrix operations and matrix functions. Dynamic size matrices. Numerical libraries. Compiled binaries. Examples. | 1Χ3=3 |
12 | Object oriented programming in Fortran | Modules. Common variables. Public and private functions. Function overloading. New data types. Class definition. Inheritance and polymorphism. Examples. | 1Χ3=3 |
13 | Fortran parallel programming and C interoperability | Multiple instances of single program. Integrated parallel processing with Fortran statements. Communication with co-arrays. Instances synchronization with SYNC and NOTIFY, QUERY. Avoiding side effects with critical regions. Examples. Interoperability with C. Compatible variable types. Calling C functions from Fortran. Calling Fortran functions from C. Interfaces. Calling C functions from Python, calling Fortran functions from Python. | 1Χ3=3 |
Upon successful completion of the course, students will be able to:
Teaching methods | Class lectures and workshops. |
---|---|
Teaching media | Theory - Applications and Exercises, teaching using blackboard and slides to one group of students. |
Laboratories | Yes. This is a laboratory course. The entire course takes place in a computer lab where each student develops programs and solves engineering problems in a Python and Fortran environment. |
Computer and software use | Yes (Python and Fortran computational packages) |
Problems - Applications | Yes |