COMPUTER SCIENCE
Instructional goals
The course provides the basis 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 the notion of “Computational Thinking" and its applications in social and economic sciences; understanding algorithm principles and fundamentals of programming languages as well as basic notions of data structures, information and coding; understanding the combination of hardware and software components that make up modern digital devices and computing architectures. Understanding the main features of modern communication networks, the architecture of the web, and cloud computing. Understanding the concept of mobile computing, mobile applications and IoT; understanding social networks; understanding the basic concept of database and the potential of BigData analytics as a tool for decision support; Understanding key notions in computer and network security key concepts; being aware of the risks arising from malicious software and from the exposure of corporate and/or personal sensitive information; understanding the concept of machine learning and digital currencies. - Practical aspects: introduction to computer programming, 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:
The course will deal with both theoretical and practical concepts to understand digital technologies, such as computer networks, programming languages, algorithms and databases. This course provides knowledge and analytical resources that will enable students to understand technologies, processes and software.
Applying knowledge and understanding:
The practical part will investigate the use and the key role of problem solving abilities with particular focus on how to write programs using Python.
The students will be able to:
- analyze components of information systems.
- identify threats in computer and network security.
- design and create a simple software program.
- write programs that use loop statements to repeat the execution of blocks of code.
Making judgments:
We expect students to be able to analyze digital systems and how they are used inside an organization. They are expected to be able to discuss and evaluate essentials in computer and network security, in order to understand the threats in computer usage and Internet surfing.
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 in the digital world 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 syllabus consists of a theoretical part (classroom-based lessons) and a practical part (lectures in a lab). The contents of each part are described below. Theoretical part: - Course introduction; what is computational thinking; binary notation; definition of algorithm - Algorithms, data structures and programming languages - Network resources, cloud computing and Web search - Mobile computing, mobile devices, mobile applications and IoT - Social network and graph concepts - Data Base, BigData - Information Security and Privacy - Machine learning - Digital Currencies Practical part - Introduction to Python - Data type and data structure - Variables and constants - Conditional (if) statements and Loops - Functions - Recursive functions - Search algorithms - Numerical Algorithms
Reference Books
Students can find class materials on the e-learning platform (slides, lecture notes, and the text book reference).
Teaching Methods
The following teaching methods will be used during the course: - Traditional Lecture - Lab
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 course, 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, to know how to apply them in practice, thus demonstrating that he/she has acquired a good study method and the ability to learn, both necessary to continue autonomously 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 mastered 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 all multiple choice questions, the demonstration of an excellent knowledge in open questions and the correct resolution of exercises leads 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
Course introduction and computational thinking
Week 2
Binary notation; introduction to algorithms.
Lab practical session
Week 3
Algorithms, data structures and programming languages
(first part)
Lab practical session
Week 4
Algorithms, data structures and programming languages
(second part)
Lab practical session
Week 5
Network resources, cloud computing and Web search
Lab practical session
Week 6
Social network and graph concepts
Lab practical session
Week 7
Data Archive, Data Base, BigData
(first part)
Lab practical session
Week 8
Data Archive, Data Base, BigData
(second part)
Lab practical session
Week 9
Information Security and Privacy
Lab practical session
Week 10
Artificial Intelligence. Machine Learning
(first part)
Lab practical session
Week 11
Artificial Intelligence. Machine Learning
(second part)
Lab practical session
Week 12
Blockchain; Digital Currencies; Course recap
Lab practical session