Software Development for Algorithmic Problems

Semester:
8th
Course Type:
Project
Track:
CS (Computer Science)
Code:
Κ23γ
ECTS:
8
TEACHING HOURS per week
Theory:
1
Seminar:
-
Laboratory:
3
Specializations
Foundations of Computer Science (S1):
-
Data and Knowledge Management (S2):
-
Software (S3):
-
Hardware and Architecture (S4):
-
Communications and Networking (S5):
-
Signal and Information Processing (S6):
-
Related Courses
Course Content

The course focuses on the development of software for solving an important problem in Computer Science, on the use of the software in a real application and on its experimental evaluation. The followed approach aims at the familiarization of the students with large scale programming, often with the use of open source software libraries through team work as well as at the development of skills for the implementation and practical utilization of established, efficient algorithms. C/C++ is used as a programming language in the course. Topics covered include the implementation of efficient algorithms, their experimental evaluation, software organization and design principles, the use of open source libraries and software tools such as: Qt, Boost, Gnuplot, LAPACK, Eigen, Unit testing frameworks, collaboration and version control systems such as git and SVN as well as collaborative large scale implementation. Three assignments for the design and development of software for solving hard algorithmic problems are given with emphasis on the fields of data science and computational geometry.

LITERATURE AND STUDY MATERIALS - READING LIST

Textbook for general C/C++ programming (Εύδοξος):
 Bruce Eckel, Thinking in C++, vol. 2, εκδόσεις Μ. Γκιούρδας, 2009
Scientific publication that change from year to year according to the examined algorithmic problems.
PDF/powerpoint presentations for the description of the examined problems, the algorithmic techniques, software organization and design principles as well as for all the libraries and software tools which are used in the course.