Instructional goals
The course introduces the fundamental concepts of computational infrastructures for data science. It aims to provide students with a solid understanding of hardware and software architectures, distributed systems, cloud computing, and tools for efficient management of large-scale data. Particular attention is devoted to scalability, reliability, performance, and resource optimization, enabling students to design and use modern data-intensive computing infrastructures.
Prerequisites
Basic knowledge of programming (preferably Python) and introductory concepts of computer science. Familiarity with data analysis and software development environments is recommended.
Intended learning outcomes
Knowledge and understanding: Students will acquire knowledge of the main computational infrastructures used in data science, including computing architectures, storage systems, distributed and parallel systems, cloud platforms, and data processing frameworks.
Applying knowledge and understanding: Students will be able to select and use appropriate computational infrastructures and tools for data science tasks, configure basic distributed and cloud environments, and manage data processing workflows efficiently.
Making judgements: Students will develop the ability to critically evaluate different infrastructure solutions, assessing trade-offs in terms of performance, scalability, cost, and reliability for specific data science applications.
Communication skills: Students will be able to clearly communicate technical concepts related to computing infrastructures, using appropriate terminology, including during the final project presentation.
Learning skills: The knowledge acquired will enable students to independently update their skills and adapt to evolving technologies.
Course Contents
- Introduction to computing infrastructures for data science
- Computer architectures: CPUs, GPUs, accelerators, and memory hierarchies
- Storage systems and data management
- Distributed and parallel computing models
- Big data processing frameworks: Hadoop and Apache Spark
- Cloud computing: service models (IaaS, PaaS, SaaS) and platforms
- Containerization and orchestration: Docker and Kubernetes
- Scalability, reliability, and fault tolerance
- Performance evaluation and optimization
Reference Books
- T. White (2015), Hadoop: The Definitive Guide, O'Reilly Media
- M. Zaharia et al. (2016), Spark: The Definitive Guide, O'Reilly Media
- B. Burns et al. (2022), Kubernetes: Up and Running, O'Reilly Media
- Slides, scientific articles, and supplementary teaching materials provided during the course (available on MyLuiss)
Teaching Methods
The course is structured around frontal lectures (24 hours total, 2 hours per week for 12 weeks) and additional hands-on laboratory sessions. Frontal lectures cover the theoretical and conceptual content of the course. Additional laboratory sessions, distributed throughout the semester provide students with the opportunity to apply acquired knowledge in practice using real tools and platforms (Docker, Hadoop, Spark, cloud services). These sessions are oriented towards the development of the final project.
Assessment Method
The course assessment takes the form of an idoneità (pass/fail). Passing requires the completion and oral presentation of a practical project, developed independently during the additional laboratory sessions throughout the semester. The project must demonstrate the student's ability to design, implement, and evaluate a computing infrastructure for a data science use case, using the tools covered in the course.
The project presentation is conducted orally, with visual support (slides), at the end of the semester (week 12).
Thesis assignment criteria
Project topics are proposed by the instructor at the beginning of the semester and assigned individually or in small groups. Topics relate to the design and implementation of solutions based on the computing infrastructures covered in the course (e.g., data processing pipelines with Apache Spark, deployment of an application on cloud, containerized cluster management with Kubernetes).
Assignment takes into account student preferences and consistency with their academic background. The project is accompanied by an oral presentation (10-15 minutes).
Evaluation criteria: technical correctness, implementation quality, clarity of the presentation, and critical reasoning in discussing design choices.
Week 1
Topics: Introduction to computing infrastructures for data science. Course overview, objectives, and structure. Motivations and application scenarios: why infrastructure matters for data science. Fundamental principles of computer system architecture.
Reference material: Lecture slides (MyLuiss). Recommended reading: Ch. 1 of Hadoop: The Definitive Guide.
Week 2
Topics: Hardware architectures – CPUs, pipelines, and memory hierarchies. Sequential computing models. Bottlenecks in data-intensive systems. Caching, prefetching, and memory access optimization.
Reference material: Lecture slides (MyLuiss).
Week 3
Topics: GPUs and hardware accelerators for artificial intelligence and data science. Architectural differences between CPUs and GPUs. Introduction to massively parallel GPU computing. Overview of specialized accelerators (TPUs, FPGAs).
Reference material: Lecture slides (MyLuiss).
Week 4
Topics: Storage systems – HDD, SSD, NAS, SAN. Local and distributed file systems. Principles of data management and access optimization. Introduction to data lake and data warehouse concepts.
Reference material: Lecture slides (MyLuiss).
Week 5
Topics: Distributed computing models. Client-server and peer-to-peer architectures. Inter-process communication: RPC, REST, messaging. Principles of consistency, availability, and partition tolerance (CAP theorem).
Reference material: Lecture slides (MyLuiss).
Week 6
Topics: Parallel computing and the MapReduce paradigm. Programming models for distributed systems. Introduction to the Hadoop ecosystem: HDFS, YARN, MapReduce.
Reference material: Lecture slides (MyLuiss). Recommended reading: Ch. 2-3 of Hadoop: The Definitive Guide.
Week 7
Topics: Apache Hadoop – in-depth architecture of HDFS and YARN. Configuration and management of a Hadoop cluster. Additional laboratory session: installation and use of Hadoop in a virtualized environment.
Reference material: Lecture slides and lab guides (MyLuiss). Recommended reading: Ch. 4-6 of Hadoop: The Definitive Guide.
Week 8
Topics: Apache Spark – architecture, RDDs, DataFrames, and Spark SQL. Comparison between Spark and Hadoop MapReduce. Additional laboratory session: data processing with PySpark.
Reference material: Lecture slides and lab guides (MyLuiss). Recommended reading: Ch. 1-5 of Spark: The Definitive Guide.
Week 9
Topics: Cloud computing – service models (IaaS, PaaS, SaaS) and deployment models (public, private, hybrid). Major cloud platforms: AWS, Microsoft Azure, Google Cloud Platform. Additional laboratory session: provisioning and configuring a cloud environment.
Reference material: Lecture slides and lab guides (MyLuiss).
Week 10
Topics: Cloud services for data science – object storage (S3, Blob), on-demand compute, machine learning as a service. Cloud costs, optimization, and governance. Additional laboratory session: using cloud services for data pipelines.
Reference material: Lecture slides and lab guides (MyLuiss).
Week 11
Topics: Containerization with Docker – images, containers, Dockerfile. Orchestration with Kubernetes – pods, deployments, services. Microservices architecture principles. Additional laboratory session: deployment of containerized applications, final project progress.
Reference material: Lecture slides and lab guides (MyLuiss). Recommended reading: Ch. 1-4 of Kubernetes: Up and Running.
Week 12
Topics: Scalability, reliability, and fault tolerance in distributed systems. Performance evaluation and infrastructure optimization. Course summary.
Additional laboratory session: completion and presentation of final projects. Students present their project (10-15 minutes) with slide support.
Reference material: Lecture slides (MyLuiss).