Course title, code: Advanced Programming Techniques, GAINBAN-HALAPROG-1

Name and type of the study programme: Computer science engineering, BSc
Curriculum: 2021
Number of classes per week (lectures+seminars+labs): 2+0+2
Credits: 4
Theory: 50 %
Practice: 50 %
Recommended semester: 5
Study mode: full-time
Prerequisites: 100 credit + Programming Paradigms and Techniques
Evaluation type: term mark
Course category: compulsory
Language: english
Responsible instructor: Dr. Drenyovszki Rajmund
Responsible department: Department of Information Technologies
Instructor(s): Dr. Drenyovszki Rajmund , Gurka Dezsőné Csizmás Edit
Course objectives:
Students will learn about the Python language and its applications in machine learning and data processing.
Course content - lectures:

1. Applications of Python. Python data structures. List comprehension, dict comprehension. Mathematical calculations and data structures (NumPy), visualization (Matplotlib). Object oriented programming in Python. Exception handling. Python Standard Library. 2. Machine learning basics. 3. Linear regression, gradient descent. 4. Normal equation, Polynomial regression 5. Binary classification, Datasets, training, validation and test sets, K-Fold validation, Confusion Matrix 6. Classification metrics (TN, FP, FN, TP), F1 Score, precision, recall, ROC 7. Logistic regression, decision tree, structured data 8. Rosenblatt perceptron, linear separability, automatic differentiation, Backpropagation algorithm 9. Neural network basics 10. Convolutional Neural Networks, image processing algorithms: classification, detection, segmentation 11. Transfer learning 12. Optimization, Linear Programming 13. Midterm test


Course content - labs:

1. Applications of Python. Variables, basic data structures, 2. Python advanced data structures: list, tuples, set and dictionary. 3. List comprehension, dict comprehension. 4. Mathematical calculations and data structures (NumPy). Visualization (Matplotlib). 5. Object oriented programming in Python. Exception handling. Python Standard Library. 6. Linear regression in Python, Implementation of the Gradient descent algorithm. 7. MNIST binary classification, metrics. 8. Logistic regression, decision tree, structured data 9. Rosenblatt perceptron, linear separability, automatic differentiation, Backpropagation algorithm 10. Neural network basics 11. Convolutional Neural Networks, image processing algorithms: classification, detection, segmentation. Transfer learning 12. Optimization, Linear Programming 13. Misterm test

Acquired competences:
Knowledge:

- He/she knows the main programming paradigms, programming languages, development tools. His/her knowledge covers the modelling of IT systems, creation of database based systems, as well as the structure, operation and implementation of computer networks. His/her knowledge covers the characteristics of intelligent systems, the specificity of mobile application development, the management of state-of-the art general purpose operating systems, as well as the aspects of IT security. - He/she is familiar with the important software development methodologies, and the notation systems for IT designs and documentation. - He knows the vocabulary and special terms of the engineering profession in the Hungarian and English languages at least on the basic level.

Skills:

- He/she is able to develop applications, program client-server and WEB, mobile operating systems, develop multiplatform systems. He/she can apply his/her knowledge acquired during his/her study to acquire deeper knowledge in the field of information engineering and to process special literature and solve problems related to information technology. - He/she is able to fulfill analytical, specification, planning, development and operation tasks, in addition, he/she applies the development methodology, debugging, testing and quality assurance methods in his/her field. - He/she cooperates with other computer science engineers, electrical engineers during team work, and with other experts during the analysis and solution of a problems. - He/she constantly improves his/her knowledge and keeps up with the development of the computer engineering profession.

Attitude:

- He/she makes an effort to work efficiently and to high standards.

Autonomy and responsibilities:


Additional professional competences:


Requirements, evaluation, grading:
Mid-term study requirements:
Attending classes, reviewing and supplementing what you have heard at home based on the recommended literature. Completion of assigned homework. The practical grade is obtained by obtaining 20 out of 40 points in the theoretical exam and 30 out of 60 points in the project assignment. The theoretical exam may be made up once. During the semester, the lecturer will announce additional opportunities to gain extra points in the lectures.
Exam requirements:

Study aids, laboratory background:

Compulsory readings:

Richard L. Halterman: Fundamentals of Python Programming, 2017, https://python.cs.southern.edu/pythonbook/pythonbook.pdf Kevin P. Murphy: Probabilistic Machine Learning: An Introduction (Adaptive Computation and Machine Learning series), The MIT Press (March 1, 2022), ISBN-13:978-0262046824, https://probml.github.io/pml-book/book1.html

Recommended readings:

Francois Chollet: Deep Learning with Python, Second Edition 2nd Edition, Manning; 2nd edition (December 21, 2021), ISBN-13:978-1617296864 Andriy Burkov: The hundred-page machine learning book, Andriy Burkov (January 13, 2019), ISBN-13:978-1777005474, http://themlbook.com/