FOUNDATIONS OF COMPUTER SCIENCE J - Pr

Academic Year 2018/2019 - 1° Year
Teaching Staff: Michele Giuseppe MALGERI and Alessandro LONGHEU
Credit Value: 9
Scientific field: ING-INF/05 - Information processing systems
Taught classes: 49 hours
Exercise: 30 hours
Term / Semester: One-year
ENGLISH VERSION

Learning Objectives

The course introduces the knowledge of the principles of information technology and procedural programming.

The course has the primary objective of providing the student with the knowledge of the main data structures, the basic algorithms and the rudiments of computational complexity.

Further, the course provides the student with the techniques and tools for the development of application programs using the ANSI-C programming language, with particular emphasis on "problem solving" and error discovering mechanisms.


Course Structure

The lessons are arranged into elementary teaching units (UDE) according to the arguments contents and skills that are to be developed.

The main teaching methods are as follows:

lessons, to acquire the basic theoretical knowledge and all the language syntactic elements;

exercises proposed and solved by the teacher to develop student’s “problem solving” methodologies, to apply knowledge and to use the IDEs;

The teacher also proposes individual activities consisting in some problem that the student must solve independently and discuss with the classroom.


Detailed Course Content

Module 1

  • Information processing and algorithms - Algorithms and programs - A graphic notation for algorithms representation - Programming languages - Programs design.

  • Information representation: Numerical systems - Numerical systems conversion - Binary number system - Binary number operations - overflow and underflow - Integers representation - Numbers with sign representations - Fixed-point and floating-point representation - Characters representation - Boole's Algebra, Logical Functions, Logical Expression, Applications of Boolean algebra.

  • Computer organization overview: Structure of a computer: main memory, central unit, instruction set architecture.

  • Basics on computer systems: basic software: Translation and program execution - programming environment - Programming languages: imperative languages - Compilers, Linkers, Implementation briefs: Preprocessor - Comments - Libraries and header files.

Module 2

  • C language foundamental elements: C syntax - Structure of a C program - Compiling a program - Types of data and representations - Main data types - Identifiers - Variables - Access modifiers - Constants - Operators - Control structures - Selection instructions - Iteration rnstructions - Jump instructions - Expression instructions - Block statement.

  • Arrays, strings and pointers: One-dimensional arrays - Array as a pointer - Arrays as a function argument - Strings - String arrays - Multidimensional arrays - Pointer variables - Operators and expressions with pointers - Function pointers - Dynamic memory allocation.

  • Arrays, strings and pointers: One-dimensional arrays - Array pointers - Arrays as a function argument - Strings - String arrays - Multidimensional arrays - Pointer variables - Operators and expressions with pointers - Array pointers - Function pointers - Dynamic allocation.

  • Functions: Function visibility rules - Function arguments - Main arguments - Return statement - Return values from a function - Recursion - Identifiers declarations and field of action - Parameter binding techniques - side effects and function implementation.

  • User-defined structures, unions and types: Structures - Arrays of structures - Structures as arguments of functions - Pointers to structures - Arrays and structures within other structures - Union - Enumerations - Sizeof - Tipedef.

  • I/O from file and console: Read and write characters and console strings - Console-formatted I/O - Channels - File.

Module 3.

  • Dynamic memory allocation.

  • Computational Complexity: Program Efficiency, Notations O and W, Program complexity evaluation, Recurrence relationships.

  • Sorting algorithms: Sorting algorithm classes - sorting by selection (selection sort) - insertion algorithms (insertion sort) - bubble sort exchange algorithms, quick sort, merge sort.

  • Abstract data types: Lists, Queues, Stacks, Binary Trees.


Textbook Information

[Be] Belagurusamy. Programming in ANSI C McGraw-Hill