Course Type:
PhD Course
Master Course
Anno (LM):
First Year
Academic Year:
2017-2018
Period:
October-January
Duration:
48 h
CFU (LM):
6
Description:
Provide advanced knowledge of both theoretical and practical programming in C ++ and Python, with particular regard to the principles of object oriented programming and best practices of software development (advanced use of version control systems, continuous integration, unit testing).
Syllabus:
- Scientific programming environment. You will learn the basic ingredients needed to efficiently develop scientific software in *nix environment.
- Introduction to C++. You will learn the logic and the basics of C++, the built-in data types and how to effectively use them. Best practices in programming will be addressed.
- Object orientation in C++. The principles of Object-Oriented programming will be presented with particular attention to their implementations in C++. Some of the most important Design Patterns will be discussed.
- Advanced features of C++11/14/17. Some of the new features of standard C++11/14/17 will be introduced and explained.
- Object-Oriented programming in Python. After a recap of the basics of Python, you will learn how to program in object-oriented fashion in the Python programming language.
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
- Design Patterns: Elements of Reusable Object-Oriented Software, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Pearson Education 1993.
The updated material for this course can be found here.
Notes about the location:
On 12/10 and 19/10 the lecture will at the Big meeting room (VII floor).
Otherwhise in room A-005.
Prerequisites:
Familiarity with linux terminal and a text editor (e.g., emacs, vim)
A bit of knowledge of git is helpful
Research Group:
Location:
TBC(to be checked)
Location:
A-005