FOUNDATIONS OF PROGRAMMING

Francesco TORTORELLA FOUNDATIONS OF PROGRAMMING

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

OBBLIGATORIO
YEAR OF COURSE 1
YEAR OF DIDACTIC SYSTEM 2017
PRIMO SEMESTRE
CFUHOURSACTIVITY
1FONDAMENTI
432LESSONS
216EXERCISES
2AMBIENTI E ALGORITMI
18EXERCISES
216LAB


Objectives
EXPECTED LEARNING OUTCOMES AND SKILLS TO BE ACQUIRED
----
THE COURSE INTRODUCES THE FUNDAMENTALS REQUIRED TO DEVELOP MODEST-SCALE COMPUTER PROGRAMS, BOTH IN A GENERAL AND ENGINEERING CONTEXT, IN A SUITABLE HIGH-LEVEL PROGRAMMING LANGUAGE USING MODERN COMPUTER SYSTEMS. IT ALSO INTRODUCES FUNDAMENTAL CONCEPTS OF MODERN COMPUTER SYSTEMS AND OF INFORMATION REPRESENTATION. THE COURSE HAS A SIGNIFICANT PRACTICAL COMPONENT IN WHICH STUDENTS WILL LEARN THE FUNDAMENTAL ELEMENTS OF THE C PROGRAMMING LANGUAGE AND TO MAKE EFFECTIVE USE OF THE BASIC PROBLEM SOLVING TECHNIQUES. DURING SUCH PRACTICE, STUDENTS ARE REQUIRED TO CONSTRUCT SIMPLE PROGRAMS FOR SOLVING THE PROBLEMS INTRODUCED AND DISCUSSED DURING THE LECTURES.


KNOWLEDGE AND UNDERSTANDING

AT THE END OF THE COURSE, STUDENTS WILL UNDERSTAND SOME OF THE BASIC PRINCIPLES UNDERLYING THE DISCIPLINE OF COMPUTER SCIENCE, THE INFORMATION REPRESENTATION, THE PROGRAMMING FUNDAMENTALS OF THE C HIGH-LEVEL LANGUAGE, THE PROGRAMMING DESIGN AND DEVELOPMENT.


APPLYING KNOWLEDGE AND UNDERSTANDING

STUDENTS WILL BE ABLE TO MAKE EFFECTIVE USE OF A MODERN COMPUTER SYSTEM FOR SOLVING MODEST-SCALE PROBLEMS. THEY WILL HAVE LEARNED KEY CONCEPTS IN COMPUTER SCIENCE AND ENOUGH C PROGRAMMING TO BE ABLE TO ANALYZE A COMPUTATIONAL PROBLEM, DEVELOP A SOLUTION AT THE LEVEL OF A HIGH-LEVEL PROGRAM DESIGN, AND IMPLEMENT THAT DESIGN IN THE C PROGRAMMING LANGUAGE. USE COMPILER. READ AND UNDERSTAND C PROGRAMS. IDENTIFY AND FIX COMMON C ERRORS.

MAKING JUDGEMENTS

STUDENTS WILL BE ABLE TO MAKE AN EFFECTIVE AND CORRECT USE OF C PROGRAMMING IN ORDER TO IMPLEMENT MODEST-SCALE ALGORITHMS.

COMMUNICATION SKILLS

STUDENTS WILL BE ABLE TO EXPRESS THEMSELVES EFFECTIVELY WITHIN FUNDAMENTALS OF PROGRAMMING MAKING USE OF AN ADEQUATE SCIENTIFIC TERMINOLOGY.

LEARNING SKILLS

STUDENTS WILL BE ABLE TO APPLY THE ACQUIRED KNOWLEDGE TO CONTESTS DIFFERENT FROM THE ONES EXPLORED IN THIS COURSE. MOREOVER, THEY WILL BE ABLE TO DEEPEN THE ARGUMENTS LEARNED BY USING BOTH TEXTBOOKS DIFFERENT FROM THE ONES HERE PROPOSED AND BY ACCESSING RESOURCES WORLDWIDE.
Prerequisites
THE COURSE ASSUMES NO PROGRAMMING BACKGROUND.
Contents
BASIC CONCEPTS (4H LECTURE, 2H PRACTICE)

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 (16H LESSONS, 8H PRACTICE)

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 AGGREGATION AND ABSTRACTION. 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 (8H LESSON, 4H PRACTICE)

STRUCTURED DATA TYPES. ARRAYS AND MATRICES: USE, INITIALIZATION AND IN-MEMORY REPRESENTATION. THE CONCEPT OF POINTER: DECLARATION AND USE. POINTERS AND 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 (8H LECTURE, 4H PRACTICE)

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 (4H LESSON, 2H PRACTICE)

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 (8H LESSON, 2H PRACTICE)

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. RELAVANT SEARCH AND SORTING ALGORITHMS: LINEAR SEARCH, BINARY SEARCH ALGORITHM, SELECTION SORT, BUBBLE SORT. DERIVATION AND NUMERICAL INTEGRATION OF A FUNCTION. (P.J. DEITEL - H.M. DEITEL: CAP. 6:07; M. VENTO: CH. 9)
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. QUESTO TESTO È ADOTTATO PER LA TRATTAZIONE DEGLI ASPETTI INERENTI ALLA PROGRAMMAZIONE.

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

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

OTHER EDUCATIONAL MATERIAL IS AVAILABLE ON THE WEBSITE OF THE COURSE
More Information
THE COURSE WILL BE HELD IN ITALIAN.
  BETA VERSION Data source ESSE3 [Ultima Sincronizzazione: 2021-02-19]