COMPUTER SCIENCE

COMPUTER SCIENCE

Pierluigi Perrone

Instructional goals

The course provides the basics for understanding the working principles of modern digital technologies and their implications on our daily life at the individual and organizational level. The objectives of the course can be divided into two main categories related to theoretical and practical aspects, as described below. Theoretical aspects: Understanding: 1) the notion of “Computational Thinking" and its applications in social and economic sciences; 2) the algorithm principles 3) the fundamentals of programming languages as well as basic notions of data structures, information and coding; 4) the combination of hardware and software components that make up modern digital devices and computing architectures. 5) the main features of modern communication networks, the architecture of the web, and cloud computing; 6) the concept of mobile computing, mobile applications and “Internet of Things” (IoT); 7) social networks; 8) the basic concept of database and the potential of BigData analytics as a tool for decision support; 9) key notions in computer and network security, acquiring awareness of the risks arising from malicious software and from the exposure of corporate and/or personal sensitive information; 10) the concept of machine learning and digital currencies. Practical aspects: introduction to computer programming (by using Python), useful for developing an alternative problem-solving approach and for understanding fundamental programming principles to be adopted in finance and statistics applications.

Intended learning outcomes

Knowledge and understanding: At the end of the course, students will have learned the fundamental notions to understand the operating principles of modern digital technologies. Through programming techniques, students will develop computational thinking as a logical-creative process that enables an efficient resolution of complex problems. Applying knowledge and understanding: At the end of the practical part of the course, students will be able to understand how a software program works and will be able to write (simple) programs in Python. The students will be able to: - recognize and analyze the main components of a software infrastructure; - identify threats and risks in the use of networks such as the Internet; - design and create simple software programs; - write programs that use loops to repeat the execution of blocks of code. Making judgments: We expect students will be able to analyze digital systems and how they are can be used inside an organization. They will be able to discuss and evaluate the essential elements of a technological infrastructure. Communications Skills: The course will give the students the possibility to understand terms and concepts related to digital systems. The students will be able to communicate their ideas, proposals, analysis, and critical reasoning related to the digital world topics in the most effective and appropriate way. Learning skills: This course will allow students to understand how information systems work and the basic concepts related to programming. The students will improve their problem solving skills by writing simple programs using the Python programming language.

Course Contents

The program consists of a theoretical part (traditional lessons) and a practical part (lessons in a computerized environment). The contents of each part are described below. Theoretical part: - Introduction to the course and Computational thinking; Why digital? Binary notation and unit of measurement - Introduction to algorithms - Algorithms, data structures and programming languages - Network resources, cloud computing and Web search - Mobile devices (including apps) and the IoT (Internet of Things) - Social networks and introduction to graphs theory - Databases/DBMS and Big Data - Information security and privacy - Artificial Intelligence and Machine Learning - Blockchain - Digital Currencies - Recap Practical part: - Introduction to Python - Simple types and data structures - Constants, variables, operators, strings - Control structures: if and loops (for and while) - Lists and Dictionaries - Functions - File writing and reading - Use of libraries - Examples of Python in Finance

Reference Books

Students can find class materials on the e-learning platform (slides, lecture notes, Python scripts and the textbook reference).

Teaching Methods

The following teaching methods will be used during the course: Traditional Lectures (theoretical part) Lab Lectures

Assessment Method

The student will be evaluated via a final exam (to be held in a room equipped with PCs) composed by two parts: - a Programming Test, that accounts 40% of the overall grade: throughout this activity, knowledge and comprehension of the basic Python programming principles and syntax will be addressed; - a Theory Test, that accounts 60% of the overall grade: throughout this activity, knowledge and comprehension of the theoretical notions issued throughout the course will be addressed. In order to pass the exam, it is necessary to pass both the Programming Test and the Theory Test (i.e., at least 7/12 and at least 11/18, respectively). The Theory Test consists in multiple-choice questions and/or open questions, through which the student will have to show to know theoretical concepts and how to apply them in practice, thus demonstrating that he/she has acquired a good study methodology and the ability to learn, both necessary to autonomously continue the study of the subject matter. The number of questions within each typology will be decided by the instructor during the course and it will be communicated to students before the exam. The Programming Test will focus on the practical aspects of programming in Python. The test will consist of exercises, with which the student will have to demonstrate that he/she has learned the fundamental principles of programming in the Python language. In order to pass the exam, it is necessary that the student gets at least 18/30. The correct answer to the multiple-choice questions, the demonstration of an excellent knowledge in open questions (theory) and the correct resolution of exercises (lab) lead to a grade that coherently weights both parts on the overall grade.

Thesis assignment criteria

The final work will be assigned (upon specific request sent to the teacher) to all students who demonstrate a serious and motivated interest to study the topics addressed in the course.

Week 1 Contenuto sessioni on line e on campus

Course introduction and Computational thinking

Week 2 Contenuto sessioni on line e on campus

Why digital? Binary notation and unit of measurement; introduction to algorithms Lab Lecture

Week 3 Contenuto sessioni on line e on campus

Algorithms, data structures and programming languages (first part) Lab Lecture

Week 4 Contenuto sessioni on line e on campus

Algorithms, data structures and programming languages (second part) Lab Lecture

Week 5 Contenuto sessioni on line e on campus

Network resources, cloud computing and Web search Lab Lecture

Week 6 Contenuto sessioni on line e on campus

Social networks and introduction to graphs theory Lab Lecture

Week 7 Contenuto sessioni on line e on campus

Database/DBMS and Big Data (first part) Lab Lecture

Week 8 Contenuto sessioni on line e on campus

Database/DBMS and Big Data (second part) Lab Lecture

Week 9 Contenuto sessioni on line e on campus

Information Security and Privacy Lab Lecture

Week 10 Contenuto sessioni on line e on campus

Artificial Intelligence and Machine Learning (first part) Lab Lecture

Week 11 Contenuto sessioni on line e on campus

Artificial Intelligence and Machine Learning (second part) Lab Lecture

Week 12 Contenuto sessioni on line e on campus

Blockchain - Digital Currencies - Course recap Lab Lecture