Università degli Studi di Napoli "Parthenope"

Teaching schedule

Academic year: 
2018/2019
Belonging course: 
Course of Bachelor's Degree Programme on COMPUTER SCIENCE
Disciplinary sector: 
INFORMATICS (INF/01)
Language: 
Italian
Credits: 
9
Year of study: 
1
Cycle: 
Second semester
Hours of front activity: 
72

Language

Lectures in Italian, books in English

Course description

The two parts of the didactic activity examine in depth some key aspects of algorithm development, analysis methodologies, logic data organization and corresponding implementation in C language. In addition, they introduce some fundamental concepts of the Object Oriented Programming in C++ language.
Knowledge and understanding
Students must show to know and to understand:
• basic concepts of the algorithm development methodology and of abstract data types;
• the C programming language (at least an elementary knowledge).
Ability to apply knowledge and understanding
Students must show:
• to be able in using their acquired knowledge for the design of algorithms to solve particular problems, even when they appear in concrete contexts and in other scientific fields;
• to be able in using the C language consciously, in order to implement an algorithm.
These capabilities are also expressed in a thorough and conscious use of computational tools and advanced computer labs.
Autonomy of judgement
Students, by themselves, must be able to assess the results returned by a software. In addition, they should know how to identify, even using online repositories, the most suitable algorithms and software to solve a specific problem.
Communication skills
Students, also working in groups, should be able to draw up a report on an algorithm, to make remarks on its results, and to document its C-language implementation using advanced scientific computing and documentation tools. Moreover, students should be able to use the suitable terminology of Computer Programming and of Abstract Data Structures, even in English language.
Learning skills
Students must be able to keep up-to-date and to analyze in depth topics and specific applications of Programming Techniques, even accessing databases, on-line software repositories and other tools available on the web.

Prerequisites

Contents of "Computer Programming I and Laboratory".

Syllabus

PART I
C language (16h)
• Basic types: Logical data type (boolean and bitwise operators), numerical types (the integer arithmetic system, the IEEE 754 Standard Floating-Point Binary Arithmetic System), Character and string types.
Dynamic Data Types (20h)
• Linear ADTs (list, queue, stack) and non-linear ADTs (generic and binary trees, BST and heaps, graphs).
• Implementation of Dynamic Data Structures in C language and their management algorithms.
Recursive functions and algorithms
• Classification of recursive functions and analysis of the maximum recursion depth.
• Examples of recursive algorithms in C.
Basic problems (12h)
• Pattern Matching (naive and KMP algorithms)
• Divide et impera sorting algorithms (Mergesort, Quicksort, Heapsort).

PART II
C++ language (12h + 12h Lab.)
• Introduction to OOP
• C++ language, ggc compiler and Code::Blocks IDE
• Basic data types
• Instructions, Operators, Functions
• Structures, Unions and Enumerations
• Namespace
• Classes and Objects (Concrete, Derived, Abstract classes)
• Templates and containers

PART I
C language (16h)
• Basic types: Logical data type (boolean and bitwise operators), numerical types (the integer arithmetic system, the IEEE 754 Standard Floating-Point Binary Arithmetic System), Character and string types.
Dynamic Data Types (20h)
• Linear ADTs (list, queue, stack) and non-linear ADTs (generic and binary trees, BST and heaps, graphs).
• Implementation of Dynamic Data Structures in C language and their management algorithms.
Recursive functions and algorithms
• Classification of recursive functions and analysis of the maximum recursion depth.
• Examples of recursive algorithms in C.
Basic problems (12h)
• Pattern Matching (naive and KMP algorithms)
• Divide et impera sorting algorithms (Mergesort, Quicksort, Heapsort).

PART II
C++ language (12h + 12h Lab.)
• Introduction to OOP
• C++ language, ggc compiler and Code::Blocks IDE
• Basic data types
• Instructions, Operators, Functions
• Structures, Unions and Enumerations
• Namespace
• Classes and Objects (Concrete, Derived, Abstract classes)
• Templates and containers

Teaching Methods

Traditional teaching in the presence, with support activities in a suitable computing laboratory.

Textbooks

Suggested books:
K. N. KING: “Programmazione in C”, Apogeo.
R. SEDGEWICK: “Algoritmi in C++”, Addison-Wesley
B. STROUSTRUP, C++ Linguaggio, Libreria Standard, Principi di Programmazione, 4a edizione, 2015
E. Gamma, R. Helm, R. Johnson, J. Vlissides (the GangOfFour), Design Patterns: Elements of Reusable Object-Oriented Software, AddisonWesley Professional, 1994
All the lectures may be watched in streaming as animated presentations in Flash format with the audio commentary by the Teacher through the e-learning platform of the Department of Sciences and Technologies:
http://e-scienzeetecnologie.uniparthenope.it
The slides (format .pdf) of all the lectures are available on the same web page, together with exercises and additional useful material.

Learning assessment

The verification procedure is aimed to verify, for each student, the achievement level of the educational objectives as previously mentioned. The verification procedure consists mainly of an oral examination and written test about C/C++ programming.

More information

All detailed information can be found on the page of the Course on the e-learning platform of the Department of Science and Technology:
http: //e-scienzeetecnologie.uniparthenope.it/