COMPUTER SCIENCE AND PROGRAMMING FOUNDATIONS

Marco LOMBARDI COMPUTER SCIENCE AND PROGRAMMING FOUNDATIONS

0612600046
DIPARTIMENTO DI INGEGNERIA INDUSTRIALE
EQF6
INDUSTRIAL ENGINEERING AND MANAGEMENT
2019/2020

OBBLIGATORIO
YEAR OF COURSE 1
YEAR OF DIDACTIC SYSTEM 2018
SECONDO SEMESTRE
CFUHOURSACTIVITY
880LESSONS


Objectives
KNOWLEDGE AND UNDERSTANDING

THE COURSE PROVIDES THE STUDENTS WITH THE BASICS OF PROBLEM SOLVING, THROUGH THE FORMULATION OF ALGORITHMS IMPLEMENTED BY THE MATLAB LANGUAGE, THE BASIC ASPECTS CONCERNING THE REPRESENTATION OF INFORMATION, AS WELL AS THEIR USE WITHIN INFORMATION PROCESSING SYSTEMS, THE FUNCTIONING OF MODERN INFORMATION PROCESSING SYSTEMS. IN ADDITION, THE BASIC PRINCIPLES OF THE DATABASE ARE PRESENTED. AGAIN, THE COURSE OFFERS SOME PRACTICAL TUTORIALS (CLASS EXERCISES), WHERE THE STUDENTS ACQUIRE PROBLEM SOLVING TECHNIQUES, ALONG WITH THE ABILITY TO IMPLEMENT THEIR OWN SOLUTIONS IN A HIGH-LEVEL LANGUAGE AND SIMPLE QUERIES IN SQL LANGUAGE. THE CONCEPTS ARE PRESENTED DURING LECTURES AND THE SOLUTIONS ARE REALIZED BY IMPLEMENTING PROGRAMS IN THE MATLAB LANGUAGE DURING THE HOURS OF PRACTICE AND BY STRUCTURING SIMPLE QUERIES.


APPLYING KNOWLEDGE AND UNDERSTANDING – ENGINEERING ANALYSIS

ABILITY TO DEVELOP LOW COMPLEXITY ALGORITHMS, BY MEANS OF A DECOMPOSITION INTO SUB-PROBLEMS, BESIDES REPRESENTING SUCH ALGORITHMS THROUGH BLOCK DIAGRAMS. ABILITY TO TRANSLATE THE ALGORITHMS IN MATLAB CODE, BY ADOPTING STRUCTURED PROGRAMMING METHODOLOGIES AND TAKING CARE OF THE COMPREHENSIBILITY OF THE PROGRAMS. LEARN HOW TO INTERPRET AND UNDERSTAND MATLAB CODE. LEARN HOW TO INTERPRET AND UNDERSTAND A SIMPLE SQL INSTRUCTION.



APPLYING KNOWLEDGE AND UNDERSTANDING – ENGINEERING DESIGN

ABILITY TO ENCODE SIMPLE ALGORITHMS USING MATLAB LANGUAGE. ABILITY TO VERIFY THE CORRECT FUNCTIONING OF MATLAB PROGRAMS. ABILITY TO STRUCTURE SIMPLE QUERIES USING THE SQL LANGUAGE.


MAKING JUDGMENTS - ENGINEERING PRACTICE

ABILITY TO CHOOSE AND USE THE BASIC CONSTRUCTS OF MATLAB LANGUAGE FOR CODING ALGORITHMS. ABILITY TO PRODUCE SIMPLE QUERIES IN SQL LANGUAGE, IN ORDER TO RETRIEVE DATA FROM A DATABASE.


COMMUNICATION SKILLS – TRANSVERSAL SKILLS

THE STUDENT WILL LEARN THE TERMINOLOGY CONCERNING THE COMPUTER SCIENCE AND THE BASIC PRINCIPLES OF THE DATABASE, THE MATLAB PROGRAMMING LANGUAGE AND THE BASIC IDEAS BEHIND THE SQL LANGUAGE.


LEARNING SKILLS – TRANSVERSAL SKILLS

THE AIM OF THE COURSE IS TO DEVELOP STUDENTS' LEARNING ABILITIES, ENABLING THEM TO CONTINUOUSLY UPDATE THEIR KNOWLEDGE AND SKILLS, APPLYING METHODOLOGIES ACQUIRED IN AREAS DIFFERENT FROM THOSE INVESTIGATED DURING THE COURSE, AND USING SOURCES OF INFORMATION OTHER THAN ADOPTED TEXTBOOKS, SUCH AS INFORMATION RETRIEVABLE ONLINE.
Prerequisites
NONE.
Contents
[PRELIMINARY CONCEPTS] (8H THEORY + 2H PRACTICE)

- INFORMATION AND DATA, INFORMATION PROCESSING, HARDWARE AND SOFTWARE.

- ARCHITECTURE OF AN INFORMATION PROCESSING SYSTEM. COMPONENTS OF THE VON NEUMANN MACHINE AND ITS OPERATION. FETCH-DECODE-EXECUTE CYCLE. MACHINE CODE. MEMORY HIERARCHY.

- REPRESENTATION AND CODING OF INFORMATION. CONCEPT OF LANGUAGE. THE AIM OF LANGUAGES. NATURAL LANGUAGES AND RELATED AMBIGUITY ISSUES. CONCEPT OF FORMAL LANGUAGE. HOW TO REPRESENT INFORMATION IN COMPUTERS. BINARY ENCODING OF NUMBERS AND CHARACTERS. POSITIONAL NUMBERING SYSTEM. REPRESENTING NUMBERS IN DIFFERENT BASES. TECHNIQUES FOR CONVERTING BETWEEN DIFFERENT BASES (DECIMAL-BINARY, BINARY-DECIMAL). SIGNED NUMBER REPRESENTATIONS: SIGN-AND-MAGNITUDE, TWO'S COMPLEMENT.

- BOOLEAN ALGEBRA AND LOGIC CIRCUITS. CHARACTERISTICS AND USES OF BOOLEAN ALGEBRA. RELATION BETWEEN BOOLEAN ALGEBRA AND LOGIC CIRCUITS. PRINCIPAL OPERATORS (OR FUNCTIONS) OF BOOLEAN ALGEBRA: AND OPERATOR (LOGIC PRODUCT), OR OPERATOR (LOGIC SUM), NOT OPERATOR (NEGATION). LAWS OF BOOLEAN ALGEBRA AND BOOLEAN ALGEBRA RULES: IDENTITY, COMMUTATIVE LAW, DISTRIBUTIVE LAW, ASSOCIATE LAW, ABSORPTION LAWS, DE MORGAN’S THEOREM. TRUTH TABLE. LOGIC FUNCTIONS. MINTERMS. CANONICAL NORMAL FORM. HOW TO TRANSFORM A TRUTH TABLE INTO A LOGIC FUNCTION. LOGIC GATES. HOW TO TRANSFORM A LOGIC FUNCTION INTO A LOGIC CIRCUIT AND VICE VERSA.


[PROGRAMMING BASICS] (8H THEORY + 2H PRACTICE)

- FORMAL MODELING OF A PROBLEM. STEPS NEEDED TO SOLVE A PROBLEM BY A COMPUTER. THE CONCEPT OF ALGORITHM AND THE RELATIVE DEFINITIONS. THE ROLE OF ALGORITHMS IN THE INFORMATION PROCESSING. MAIN FEATURES OF ALGORITHMS. REPRESENTATIONS OF ALGORITHMS: PSEUDOCODE AND FLOWCHARTS (BLOCK DIAGRAMS). THE PROCESS FOR CREATING AN ALGORITHM. ALGORITHMIC MODELING OF DAILY ACTIVITIES.

- STRUCTURED PROGRAMMING. CONTROL STRUCTURES: SEQUENCE, SELECTION, ITERATION. REPRESENTATION OF ELEMENTARY ALGORITHMS BY MEANS OF FLOWCHARTS.

- PHASES OF THE PROGRAMMING PROCESS. PROGRAMMING LANGUAGES. BUILDING BLOCKS OF PROGRAMMING LANGUAGES. INTERPRETER, COMPILER AND ASSEMBLER.

- CHARACTERISTICS OF A SOFTWARE FOR LEARNING STRUCTURED PROGRAMMING. IMPLEMENTATION OF CONTROL STRUCTURES THROUGH SUCH A SOFTWARE. HOW TO CREATE SIMPLE ALGORITHMS THROUGH SUCH A SOFTWARE.


[MATLAB PROGRAMMING] (20H THEORY)

- INTRODUCTION TO MATLAB ENVIRONMENT AND MATLAB PROGRAMMING. VARIABLES. ARITHMETIC OPERATORS AND THEIR PRIORITY. WORKSPACE E WORKING SESSION. DOCUMENTATION AND HELP.

- MATRIX AND ARRAY. MATRIX AND ARRAY INDEXING. ELEMENTARY OPERATIONS (CREATE, EDIT, DELETE) AND ARITHMETIC OPERATIONS ON ARRAYS AND MATRICES.

- INCREMENTAL CREATION OF PROGRAMS THROUGH A TOP-DOWN PROCESS. FUNCTIONAL DECOMPOSITION. FUNCTIONS, PROTOTYPES, CALL BY VALUE AND CALL BY REFERENCE, BUILT-IN AND USER-DEFINED FUNCTIONS. M-FILE (M-FILE SCRIPT AND M-FILE FUNCTION). INPUT/OUTPUT IN MATLAB.

- RELATIONAL OPERATORS AND LOGICAL OPERATORS. SELECTION: IF, IF-ELSE, IF-ELSEIF-ELSE, SWITCH-CASE. ITERATION: FOR, WHILE AND DO-WHILE. BREAK E CONTINUE.

- CREATION AND MANAGEMENT OF FILES IN MATLAB. WRITING/READING FILES. IMPORT DATA FROM FILES.

- CHARTS IN MATLAB (BAR, HISTOGRAM, ETC.). CREATING AND CUSTOMIZING CHARTS. PLOTTING AND SUBPLOTTING.

- AN OVERVIEW ON SIMULINK, DEBUGGING AND RECURSION.


[DEVELOPMENT OF ALGORITHMS IN MATLAB] (20H PRACTICE)

- DESIGN, DEVELOPMENT AND TESTING OF ALGORITHMS FOR VECTOR AND MATRIX, TO SOLVE TYPICAL PROGRAMMING PROBLEMS: MIX, MAX, MATRIX TRANSPOSE, SCALAR PRODUCT, MATRIX PRODUCT, GREATEST COMMON DIVISOR, LEAST COMMON MULTIPLE, FACTORIAL, PRIMALITY TEST, FIND DIVISORS, ETC. ALGORITHMS FOR SEARCHING. ALGORITHMS FOR SORTING.

- DESIGN, DEVELOPMENT AND TESTING OF ALGORITHMS ON VECTORS AND MATRICES, TO SOLVE “REAL LIFE” PROBLEMS, BELONGING TO DIFFERENT CONTEXTS.
Teaching Methods
THE COURSE PROVIDES BOTH THEORETICAL LECTURES AND PRACTICAL EXERCISES. IN PARTICULAR, DURING THE EXERCISES, THE PROPOSED PROBLEMS ARE SOLVED THROUGH ALGORITHMS AND TRANSLATED INTO MATLAB CODE, WHICH WILL BE TESTED TO VERIFY THE RELATIVE CORRECTNESS.
Verification of learning
THE LEARNING ASSESSMENT CAN OCCUR IN TWO MODES:

- DURING THE COURSE (IN ITINERE)

A) THREE MIDTERM EXAMS, TO BE CARRIED OUT IN THE PERIOD OF DIDACTIC ACTIVITIES. THE FIRST ONE WILL BE ON THE ARGUMENTS TREATED IN THE FIRST PART OF THE COURSE. THE SECOND ONE WILL BE ON PRACTICAL EXERCISES RELATED TO THE DEVELOPMENT OF A PROGRAM IN MATLAB. THE THIRD ONE WILL FOCUS ON THE BASICS OF DATABASE IN THE SQL LANGUAGE.

B) OPTIONAL ORAL EXAMINATION, CONCERNING THE TOPICS COVERED DURING THE COURSE, AS WELL AS THE MATLAB PROGRAMS WRITTEN BY THE CANDIDATE.

- EXAM

A) THE WRITTEN TEST CONSISTS IN THE DEVELOPMENT OF MATLAB PROGRAMS AND IN SOME QUESTIONS REGARDING THE TOPICS ADDRESSED DURING THE FIRST PART OF THE COURSE AND REGARDING THE DATABASE.

B) OPTIONAL ORAL EXAMINATION, CONCERNING THE TOPICS COVERED DURING THE COURSE, AS WELL AS THE MATLAB PROGRAMS WRITTEN BY THE CANDIDATE.

THE ESSENTIAL CONDITION TO GET A PASSING GRADE IS THE KNOWLEDGE OF BASIC MECHANISMS INVOLVED IN THE FUNCTIONING OF AN ELECTRONIC CALCULATOR (VON NEUMANN MACHINE), THE CAPACITY TO MAKE CONVERSIONS BETWEEN NUMBERS REPRESENTED IN DIFFERENT BASES (DECIMAL / BINARY AND VICEVERSA), ABILITY TO REPRESENT NUMBERS IN SIGN-AND-MAGNITUDE AND TWO'S COMPLEMENT, ABILITY TO REPRESENT A LOGICAL FUNCTION THROUGH A TRUTH TABLE AND A LOGIC CIRCUIT, ABILITY TO WORK ON THE MAIN DATA STRUCTURES PROVIDED BY MATLAB (ARRAY AND MATRIX): IN PARTICULAR, THE CANDIDATE NEEDS TO BE ABLE TO INDEX AND MANAGE SUCH DATA STRUCTURES, AS WELL AS TO DEMONSTRATE THE ABILITY IN USING THE MAIN MATLAB FUNCTIONS WORKING ON MATRICES (MIN, MAX, SEARCHING, ETC.). THE CANDIDATE NEEDS TO BE ABLE TO CREATE AND EXPLAIN MATLAB CHARTS.
THE CANDIDATE ACHIEVE AN OUTSTANDING GRADE IF HE/SHE IS ABLE TO ADDRESS UNUSUAL PROBLEMS, AS WELL AS PROBLEMS NOT EXPLICITLY COVERED DURING THE COURSE. THE EVALUATION IS BASED ON THE SKILLS ACQUIRED ON THE CONTENTS AND METHODOLOGICAL TOOLS PRESENTED DURING THE COURSE, ALSO TAKING INTO ACCOUNT THE QUALITY OF THE WRITTEN AND ORAL EXPOSURE, AS WELL AS THE SHOWN AUTONOMOUS ASSESSMENTS.

Texts
- DONATELLA SCIUTO, GIACOMO BUONANNO, LUCA MARI - INTRODUZIONE AI SISTEMI INFORMATICI V EDIZIONE, MCGRAW-HILL.

- WILLIAM J. PALM III, MATLAB 7 PER L’INGEGNERIA E LE SCIENZE, MCGRAW-HILL.

LECTURE NOTES OF THE COURSE AND EXERCISES CAN BE DOWNLOADED FROM THE WEBSITE OF THE COURSE.
More Information
ITALIAN TAUGHT SUBJECT.
  BETA VERSION Data source ESSE3 [Ultima Sincronizzazione: 2021-02-19]