FOUNDATIONS OF PROGRAMMING

Francesco TORTORELLA FOUNDATIONS OF PROGRAMMING

0612700106
DIPARTIMENTO DI INGEGNERIA DELL'INFORMAZIONE ED ELETTRICA E MATEMATICA APPLICATA
EQF6
COMPUTER ENGINEERING
2021/2022



OBBLIGATORIO
YEAR OF COURSE 1
YEAR OF DIDACTIC SYSTEM 2017
AUTUMN SEMESTER
CFUHOURSACTIVITY
1AMBIENTI E ALGORITMI - MOD.1
324LESSONS
324LAB
2FONDAMENTI - MOD.2
324EXERCISES


Objectives
THE COURSE PROVIDES THE BASIC ELEMENTS FOR SOLVING PROBLEMS OF NOT HIGH COMPLEXITY THROUGH THE USE OF COMPUTING SYSTEMS, USING THE FUNDAMENTAL ELEMENTS OF A HIGH-LEVEL PROGRAMMING LANGUAGE.
THE COURSE ALLOWS STUDENTS TO ACQUIRE KNOWLEDGE OF THE FUNDAMENTAL ELEMENTS OF STRUCTURED PROGRAMMING AND OF THE C LANGUAGE, ALONG WITH THE ""PROBLEM SOLVING"" TECHNIQUES THROUGH THE USE OF A COMPUTER.

KNOWLEDGE AND UNDERSTANDING
SYNTAX OF THE C LANGUAGE, ENCODING AND REPRESENTATION OF INFORMATION, FUNDAMENTAL CONSTRUCTS OF HIGH-LEVEL PROGRAMMING LANGUAGES, FUNDAMENTAL DATA STRUCTURES (ARRAYS AND MATRICES), REPRESENTATION OF ALGORITHMS THROUGH BLOCK DIAGRAMS, PHASES OF THE TRANSLATION OF A PROGRAM.

APPLYING KNOWLEDGE AND UNDERSTANDING
DESIGN AN ALGORITHM TO SOLVE PROBLEMS OF NOT HIGH COMPLEXITY. READ AND DESIGN IN THE C LANGUAGE. CODE AN ALGORITHM INTO A C LANGUAGE PROGRAM USING AN INTEGRATED DEVELOPMENT ENVIRONMENT. COMPILE A PROGRAM WRITTEN IN C. IDENTIFY AND RESOLVE COMMON ERRORS.
Prerequisites
THE COURSE ASSUMES NO PROGRAMMING BACKGROUND.
Contents
BASIC CONCEPTS (LECTURE/PRACTICE/LABORATORY HOURS 4/2/0)
INTRODUCTION. THE CONCEPTS OF INFORMATION, ALGORITHM, AUTOMA, PROGRAM AND PROCESS. ELEMENTS OF BOOLEAN ALGEBRA. REPRESENTATION AND CODING OF INFORMATION. (M. VENTO: CH. 1)

PROGRAMMING FUNDAMENTALS (LECTURE/PRACTICE/LABORATORY HOURS 16/0/8)
INTRODUCTION. THE HIGH-LEVEL PROGRAMMING LANGUAGES AND THEIR DESCRIPTION. PROBLEM SOLVING: REPRESENTATION AND SIMULATION OF ALGORITHMS EXECUTION USING FLOWCHARTS. INTRODUCTION TO THE C LANGUAGE.
THE CONCEPTS OF TYPES AND VARIABLES. SIMPLE TYPES: INTEGER, FLOAT, CHAR, ENUMERATION TYPES. AUTOMATIC VARIABLES, EXTERNAL AND STATIC. FORMATTED INPUT/OUTPUT. STANDARD LIBRARIES. ARITHMETIC, RELATIONAL AND LOGICAL OPERATORS. THE ASSIGNMENT STATEMENT AND ITS SEMANTICS. EXPRESSIONS. SIMPLE INSTRUCTIONS. INSTRUCTION BLOCKS. SELECTIVE CONTROL STRUCTURES. PREDETERMINED AND NOT ITERATIVE CONTROL STRUCTURES. DEVELOPMENT ENVIRONMENTS: IDE (INTEGRATED DEVELOPMENT ENVIRONMENT) TO DEVELOP STRUCTURED PROGRAMS. COMPILERS AND INTERPRETERS. TOOLS FOR THE PRODUCTION OF PROGRAMS. PROGRAM EDITING. COMPILING, LINKING AND EXECUTING. DEBUGGING. (P.J. DEITEL - H.M. DEITEL: CH. 1, 2, 3, 4 AND 9; M. VENTO: CAP. 2:03)

STRUCTURED PROGRAMMING (LECTURE/PRACTICE/LABORATORY HOURS 8/0/4)
STRUCTURED DATA TYPES. ARRAYS AND MATRICES: USE, INITIALIZATION AND IN-MEMORY REPRESENTATION. THE CONCEPT OF POINTER: DECLARATION AND USE. STRINGS. THE STANDARD LIBRARY FUNCTIONS. (P.J. DEITEL - H.M. DEITEL: CH. 6, 7 AND 8; M. WIND: CAP 6:08).

FUNCTIONAL DECOMPOSITION AND PROGRAM DESIGN (LECTURE/PRACTICE/LABORATORY HOURS 8/0/4)
MODULAR PROGRAMMING: THE CONCEPT OF FUNCTION. DEFINITION, CALL, PROTOTYPE. PARAMETER PASSING BY VALUE AND BY REFERENCE. SIDE EFFECTS AND PROCEDURES. STATIC AND DYNAMIC SEQUENCE. VISIBILITY AND DURATION OF VARIABLES. PREDEFINED FUNCTIONS OF THE STANDARD LIBRARY. ((P.J. DEITEL - H.M. DEITEL: CH. 5; M. VENTO: CH. 5)

THE FILES (LECTURE/PRACTICE/LABORATORY HOURS 4/0/2)
THE FILE CONCEPT. FILE SEQUENTIAL AND DIRECT ACCESS. TEXT FILES. OPENING AND READING AND WRITING TO FILES. READING CHARACTERS AND FORMATTED READING. (P.J. DEITEL - H.M. DEITEL: CAP. 11; M. VENTO: CH. 7)

DEVELOPMENT OF ALGORITHMS (LECTURE / PRACTICE / LABORATORY HOURS 8/0/4)
DEVELOPMENT OF ALGORITHMS ON SEQUENCES, VECTORS AND MATRICES: THE MINIMUM AND MAXIMUM CALCULATION, DOT PRODUCT, MATRIX PRODUCT, CALCULATION OF THE TRANSPOSE AND THE TRACE OF A MATRIX. DEVELOPMENT OF PROGRAMS WITH I/O ON FILES. RELEVANT SEARCH AND SORTING ALGORITHMS: LINEAR SEARCH, BINARY SEARCH ALGORITHM, SELECTION SORT, BUBBLE SORT. (P.J. DEITEL - H.M. DEITEL: CAP. 6:07; M. VENTO: CH. 9)

TOTAL LECTURE/PRACTICE/LABORATORY HOURS 48/2/22
Teaching Methods
THE COURSE IS STRUCTURED AS FOLLOWS: LECTURES (48H), PRACTISE (24H). DURING THE PRACTISE, ALGORITHMS AND THEIR CODING IN C LANGUAGE ARE PROPOSED AND DISCUSSED AND STUDENTS ARE ASKED TO IMPLEMENT SPECIFIC ALGORITHMS IN ORDER TO SOLVE THE PROBLEMS PROPOSED DURING THE LECTURES AND THE PRACTISE. IN ORDER TO PARTICIPATE TO THE FINAL ASSESSMENT AND TO GAIN THE CREDITS CORRESPONDING TO THE COURSE, THE STUDENT MUST HAVE ATTENDED AT LEAST 70% OF THE HOURS OF ASSISTED TEACHING ACTIVITIES.
Verification of learning
LEARNING SKILLS WILL BE CHECKED BY MEANS OF MIDTERM EXAMINATION, WHILE THE FINAL ASSESSMENT CONSISTS IN A WRITTEN AND AN ORAL EXAMINATION. THE FINAL GRADE IS ASSIGNED AS FOLLOWS: MIDTERM EXAM COUNTS FOR 30%, WRITTEN EXAM COUNTS FOR 50%, WHILE ORAL EXAM COUNTS FOR 20%. MIDTERM EXAMINATION CONSISTS IN A MULTIPLE-CHOICE TEST AND TWO OPEN QUESTIONS. WRITTEN EXAMINATION REQUIRES STUDENTS TO SOLVE A PRACTICAL PROBLEM WHOSE SOLUTION INVOLVES DESIGNING, CODING, EXECUTING AND TESTING A PROGRAM IN C LANGUAGE. THE AIM WILL BE TO DEMONSTRATE THE ABILITY TO TRANSFORM A PROBLEM INTO A DESIGN, AND A DESIGN INTO AN OPERATIONAL PROGRAM. ORAL EXAMINATION CONSISTS IN AN ORAL DISCUSSION ABOUT ALL THE ARGUMENTS OF THE COURSE WITH THE AIM TO ASSESS THE LEARNING SKILLS ACHIEVED.
Texts
"PAUL J. DEITEL - HARVEY M. DEITEL, IL LINGUAGGIO C - FONDAMENTI E TECNICHE DI PROGRAMMAZIONE, PEARSON.

M. VENTO, FONDAMENTI DI INFORMATICA, APPUNTI DELLE LEZIONI, EDIZIONE 2015. THIS TEXT IS ADOPTED FOR THE TREATMENT OF ASPECTS RELATING TO PROGRAMMING.

OTHER USEFUL TEXTS:
L.J. AGUILAR, FONDAMENTI DI PROGRAMMAZIONE IN C++, MCGRAW-HILL ITALIA, 2008

AL KELLEY, IRA POHL, ""C DIDATTICA E PROGRAMMAZIONE”, PEARSON.

SUPPLEMENTARY TEACHING MATERIAL WILL BE AVAILABLE ON THE UNIVERSITY E-LEARNING PLATFORM (HTTP://ELEARNING.UNISA.IT) ACCESSIBLE TO STUDENTS USING THEIR OWN UNIVERSITY CREDENTIALS."
More Information
THE COURSE IS HELD IN ITALIAN
  BETA VERSION Data source ESSE3 [Ultima Sincronizzazione: 2022-11-21]