The emergence of Internet of Things (IoT) paradigm has led to a continuous increase in the number of services that have similar functionalities but different quality of service (QoS). The IoT services composition, therefore, becomes an important challenge that aims at creating added-value services by combining several services offered by thousands of smart devices in the IoT environment to meet the user's QoS requirements. In this context, an improved teaching learning-based QoS-aware services composition algorithm (ITL-QCA) is proposed to find a very close to the optimal composition in a reasonable amount of time. Unlike the evolutionary computation-based and swarm intelligence-based approaches, the proposed services composition algorithm is characterized by a few tuning parameters and a high exploration capability of the search space of compositions. This allows obtaining compositions with a high optimality in terms of QoS and without requiring some hard tuning parameters. The simulation results show clearly that the ITL-QCA algorithm performs better in terms of the composition optimality and has a reasonable execution time in a large-scale environment compared to other services composition approaches proposed in the literature.