FONDAMENTI DI PROGRAMMAZIONE A - E
Module PROGRAMMAZIONE I

Academic Year 2023/2024 - Teacher: Vincenza CARCHIOLO

Expected Learning Outcomes

The Programming I module of the Fundamentals of Programming aims at developing the competence in ANSI C programming. It aims to enable them to face medium complexity challenges, evaluate, select, and design algorithms, communicate using the most suitable techniques, and employ an appropriate language. The module also encompasses insights into information representation, computer architecture, and operating systems.

Upon completing this module, the student has a comprehensive understanding of the ANSI C programming language.

Knowledge and Understanding:

The primary objective is to provide students with knowledge of the ANSI C programming language, including its syntax, semantics, and applications. The module focuses on data types, variables, operators, control structures, functions, and pointers.

  • Elementary knowledge of number systems and information representation.
  • Elementary knowledge of computer architecture and the principles of operating systems.
  • Knowledge of problem-solving techniques and computer science principles.
  • Knowledge of the procedural programming paradigm.
  • Knowledge of the syntax and semantics of the ANSI C language.

Applying Knowledge and Understanding:

Students will develop the ability to apply the acquired knowledge through exercises, using also computer, with the aim of enhance their problem-solving skills and ANSI C code writing capability.

The students will be proficient in using available resources, including functions from the ANSI C standard library and their practical applications, with a focus on input/output functions, string manipulation, basic memory management, and file handling.

  • Ability to solve elementary problems, write the solving algorithm, and implement it using the ANSI C language.
  • Ability to analyze code and correct errors during development phases and create a functioning application.
  • Ability to use an Integrated Development Environment (IDE).

Learning Skills:

Students will be able to analyze and evaluate medium-complexity problems, such as sequence management, sizing, and processing that involve memory allocation, they will be able to use ANSI C to implement the solutions, using development environments and debugging tools to resolve common errors.

  • Ability to learn new languages, programming paradigms, and manipulate data structures.
  • Ability to use learned knowledge and skills to methodically address complex problems.

Communication Skills:

This module will introduce students to computer jargon and allow them to communicate effectively through mathematical/computer language, enabling the sharing of programming solutions and ideas.

  • The student acquires knowledge of computer language and technical terminology.

Course Structure

The course includes lectures as the main teaching method. Lectures are accompanied by exercise sessions are designed with the aim of acquiring the basic theoretical knowledge and all the syntactic elements, acquiring the ability to solve problems, applying the knowledge, using development environments and methodologies. 

The teacher also proposes individual exercises that consist in solving a problem that the student is asked to face with autonomously and subsequently solved and discussed in class. 

Should teaching be carried out in mixed mode or remotely, it may be necessary to introduce changes with respect to previous statements, in line with the programme planned and outlined in the syllabus. 

Learning assessment may also be carried out on line, should the conditions require it. 

Required Prerequisites

  • Exponential or Scientific Notation of Numbers. Rounding of Numeric Values.
  • Real Numbers. Operations with Real Numbers. Power with Rational and Real Exponents. Logarithm of a Positive Real Number.
  • The Concept of a Mathematical Function.
  • Vectors and Matrices: Operations with Vectors and Matrices.

Attendance of Lessons

Attendance is not mandatory, although it is highly recommended for successfully completing the exam.

 To be eligible to take the midterm assessment for the module, students are required to attend a minimum of 70% of the course lectures.

 In the event that the course is delivered in a hybrid or remote format, the requirements for participation in the midterm assessments may be subject to modification.

Detailed Course Content

PRELIMINARY CONCEPTS

  • Algorithms
    • Fundamental Concepts in Information Processing and Algorithmics.
    • Properties of an Algorithm.
    • Textual and Graphical Notations for Algorithm.
    • Development of Simple Algorithms.
  • Information Representation
    • Numeric Systems and Conversions Between Them.
    • Binary Number System.
    • Operations on Binary Numbers.
    • Representation of Integer Numbers
    • Handling Overflow and Underflow.
    • Fixed-Point and Floating-Point Representation.
    • Codes and Character Representation.
    • Boolean Algebra, Logical Functions, Logical Expressions, and Boolean Algebra Applications.
  • Computer Architecture and Programming Languages
    • Computer Structure: Central Processing Unit (CPU), Main Memory, Input-Output Units, Mass Storage.
    • Basic Computer Operation.
    • Introduction to Operating Systems: Structure and Operation Modes.
    • Programming Languages: paradigmi, Program Translation, and Execution.
    • Compilers and Interpreters.
    • Programming Environments and Development Tools.

THE ANSI C LANGUAGE

  • Elements of the C Language, Including Syntax.
    • Structure of a C Program.
    • Data Types and Representations.
    • Variables, Constants, and Assignment Statements.
    • Arithmetic, Relational, and Logical Operators.
    • Expressions.
    • Basic Console Input/Output Functions: printf and scanf.
    • Control Structures: if-else, switch, and Iterations (while, do-while, for).
    • C Development Environments, Compilation, Execution, and Debugging.
  • Structured Types
    • One-Dimensional Arrays.
    • Strings and Arrays of Strings.
    • Multidimensional Arrays.
    • Pointers: Variables, Operators and Expressions.
    • Pointers and Arrays and Their Equivalence.
    • Structures, Arrays of Structures, Pointer to Structures, Arrays and Structures Within Other Structures.
    • Other Structures like Unions and Enumerations.
    • Sizeof and Typedef.
  • Functions
    • Definition and Declaration.
    • Visibility Rules.
    • Arguments, Including those of main.
    • return Statement and Values Returned by a Function.
    • Recursion.
    • Identifier Declarations and Scope.
    • Parameter Binding Techniques.
    • Side Effects and Function Implementation.
    • Using Function Pointers.
  • Input/Output (I/O) Management
    • Reading and Writing Characters and Strings.
    • Formatted I/O.
    • Text and Binary Files.
    • File Read and Write Operations.
  • Memory Management
    • Memory Organization in a Program (Global, Heap, and Stack).
    • Heap Memory and Dynamic Array Allocation.

Textbook Information

Handour

Learning Assessment

Learning Assessment Procedures

Learning Assessment Procedures

Midterm Assessment

  • The module includes a midterm assessment.
    • It consists in Development of a computer application, typically lasting 60 to 90 minutes.
  • Participation in the midterm assessment is subject to the following conditions:
    • Attendance of at least 70% of the module's lectures.
  • The midterm assessment will take place at the end of the module.
  • The midterm assessment is valid only within the current academic year.

Final Assessment for Module Programming I

  • Development of a computer application, typically lasting 60 to 90 minutes.
  • This assessment is valid only within the current academic year.

Full Course Assessment

  • It involves passing both the final assessments of Module Programming I and Programming II.
  • The assessments for both modules can be taken in the same examination session.

Examples of frequently asked questions and / or exercises

Examples of questions and exercises are available on  Microsoft Teams platform
VERSIONE IN ITALIANO