94499 - Supporting Managerial Decisions Through Machine Learning: A Primer on Python

Academic Year 2021/2022

  • Teaching Mode: Traditional lectures
  • Campus: Bologna
  • Corso: Second cycle degree programme (LM) in Business Administration (cod. 0897)

Learning outcomes

EMSI employment data reports Python skills as an increasing requirement for manager positions (90% increase and growing, as of 2018 - source EMSI employment data 2018 and Columbia Business School). While, traditionally, programming tasks have been outsourced to IT engineers, this insulation between management and software development is no longer a desirable business practice.


This course aims at empowering management students with a practical knowledge of programming with Python, along with foundational training in machine learning concepts and applications in a business environment.


Rather than simply providing an introductory overview, the learning objective is to provide students with autonomous coding skills, enabling them to individually solve computer science problems with a reasonable level of complexity, as well as rightfully participate to or manage larger development teams for more complex projects.


The course assumes no prior knowledge neither in computer science or machine learning, with the exception of some exposure to typical statistical analysis skills encountered in management curricula.


Students will gain pragmatic knowledge in order to able to

  • effectively plan and execute Digital Transformation programs with particular regard to decision-making support and other business automation objectives
  • identify opportunities to leverage software to enhance management tasks
  • autonomously hire technical employee as well as audit their work
  • pursue further independent study on the course subjects, in a self-teaching capacity

Course contents

The Python sub-module will cover the fundamentals of coding in Python as an objective in itself (i.e. not strictly tied to machine learning). This includes working with the Python interpreter, understanding the overall language grammar, data types and structures, conditional logic, iterative loops, as well as the Python Standard Library and common Python packages with particular regard to data manipulation and visualization. 

The machine learning sub-module will cover supervised and unsupervised approaches as well as an introduction to reinforcement learning. Key topics will be ML model selection and evaluation, features and feature engineering concepts, the issue of dimensionality as well as generalization, over-fitting, cross-validation, etc.

Business applications of ML will be presented by leveraging study cases to be analyzed and executed end to end (except data collections campaigns) by students either individually or as part of a group.

Readings/Bibliography

Andreas C. Müller, Sarah Guido - Introduction to Machine Learning with Python: A Guide for Data Scientists - O'Reilly Media

Further material will be indicated during classes, including readings, software documentation and case studies.

Teaching methods

The course teaching will prioritize depth over breadth, aiming at enabling the novice student, with no prior Computer Science knowledge, to achieve autonomous Python code writing skills. 

From the inception, students will replicate the teacher's code writing on their own machines, as well as individually solving challenges in several occasions throughout each lesson.

Both Computer Science and Machine Learning theory will be introduced as a consequence of practice, rather than upfront, standalone topics. This is arguably the best possible compromise to accommodate the vastity of both CS and ML subjects into a single course for novices.

Assessment methods

Assessment will be conducted in the form of practical code-writing projects. Other than the final exam, a mid term assignment after the completion of the Python sub-module might be introduced.

Beyond graded assignments, non-graded learning checkpoints could also be introduced, in order to let the teacher dynamically adjust the syllabus to the overall class advancement.

Depending on the class composition, with particular regard to both the sheer number of enrolled students and the range of initial skills, graded work might be organized in groups.

The grading scheme will be tailored to the novice student (no prior knowledge in Computer Science and Machine Learning). Depending on the starting class composition (range of skills) some mechanisms might be considered to enhance grading fairness, such as diversification of group composition, customization of assignments, etc.

Further instructions regarding assessment and grading will be given in class.

Teaching tools

The course will be held following a BYOD (Bring your own device) model. Students will work on their own laptops whenever possible, so as to accommodate remote learning, as imposed by the Covid pandemic.

Full instructions as to how to setup the learning environment will be covered in class. The course will mostly utilize Open Source tools: the Python interpreter as well as development environments and tools such as Jupyter Notebook and PyCharm IDE.

Students laptops should be equipped with at least 8GB of RAM and 5-10 GB of free storage space. Students are highly encouraged to make sure they meet or possibly exceed these parameters.

Office hours

See the website of Massimo Aliberti