Advanced Programming
The course aims to provide advanced knowledge of both theoretical and practical programming in C++14 and Python3, with particular regard to the principles of object-oriented programming and best practices of software development.
Syllabus:
- Introduction to C++14. You will learn the logic and the basics of C++14, the built-in data types and how to effectively use them. Best practices in programming will be addressed.
- Object orientation in C++14. The principles of Object-Oriented programming will be presented with particular attention to their implementations in C++14. Some of the most important Design Patterns will be discussed.
- Python3. After a recap of the basics of Python3, you will learn how to program in object-oriented fashion in the Python3 programming language.
- How to combine the two languages. Several methods to combine the two languages will be presented.
Where
- In-person lectures: University of Trieste, H2bis building, Morin room
- Remotely: via Microsoft Teams. Please join the team here. If you cannot join it, please let me know.
When
First lecture Monday, October 11, 2021, then each Monday and Friday.
- Monday 14-16
- Friday 14-18
Contact me
- email:
asartori@ictp.it
,alberto.sartori@sissa.it
- office: 107 old SISSA building via Beirut
Prerequisites
- Familiarity with linux terminal and a text editor (e.g., emacs, vim)
- A bit of knowledge of git
References
-
Programming: Principles and Practice using C++ (Second Edition), Bjarne Stroustrup, Addison-Wesley 2014, ISBN 978-0-321-99278-9
-
The C++ Programming Language, Bjarne Stroustrup, Addison-Wesley 2013, ISBN 978-0321563842
-
Fluent Pyhton. Clear, concise, and effective programming, Luciano Ramalho, O'Reilly 2015, ISBN 978-1-491-946000-8
How to get the material
Non-experienced git users
- Very first time
(N==0)
- open a terminal
cd
in a suitable foldergit clone https://github.com/asartori86/advanced_programming_2021.git
cd advanced-programming_2021
- take a look at software carpentry lecture and pro git book
N > 0
- open a terminal
cd
to the folderadvanced-programming_2021
git pull origin master
- if(conflict)
- ask
Experienced git users
- Very first time
(N==0)
- fork the repository
- clone either your fork or this repository
- add the other remote
N >= 0
- use branches
- rebase on the correct master branch
- merge the branches in your local master
- push on the master of your fork
- if(conflict)
- if(rebase)
git add
git rebase --continue
- if(bigger mess)
git rebase --abort
- if(merge)
git add
git commit
git merge --continue
- if(bigger mess)
git merge --abort
- if(rebase)