Abstract
Python is gaining popularity in academia as the preferred language to teach novices serial programming. The syntax of Python is clean, easy, and simple to understand. At the same time, it is a high-level programming language that supports multi programming paradigms such as imperative, functional, and object-oriented. Therefore, by default, it is almost obvious to believe that Python is also the appropriate language for teaching parallel programming paradigms. This paper presents an in-depth study that examines to what extent Python language is suitable for teaching parallel programming to inexperienced students. The findings show that Python has stumbling blocks that prevent it from preserving its advantages when shifting from serial programming to parallel programming. Therefore, choosing Python as the first language for teaching parallel programming calls for strong justifications, especially when better solutions exist in the community.
Similar content being viewed by others
References
Python. https://www.python.org/.
Quora. Why does Python get so much hate? November 2014. https://www.quora.com/Why-does-Python-get-so-much-hate https://www.quora.com/Why-does-Python-get-so-much-hate.
Guo, P. (2014). Python is now the most popular introductory teaching language at top U.S, Universities. http://cacm.acm.org/blogs/blog-cacm/176450-python-is-now-the-most-popular-introductory-teaching-language-at-top-us-universities/fulltext http://cacm.acm.org/blogs/blog-cacm/176450-python-is-now-the-most-popular-introductory-teaching-language-at-top-us-universities/fulltext.
Most Popular Coding Languages of 2016 (2016). http://blog.codeeval.com/.
TIOBE Index. http://www.tiobe.com/tiobe-index/.
IEEE Spectrum ranking. http://spectrum.ieee.org/computing/software/the-2016-top-programming-languages.
Coursera. https://www.coursera.org/.
Cormen, T.H. (2015). Parallel computing in a python-based computer science course. In Prasad, Gupta, Rosenberg, Sussman, & Weems (Eds.), Topics in parallel and distributed computing: introducing concurrency in undergraduate courses, (P. 360). Morgan Kaufmann. 1st edn. ISBN:9780128038994.
Parallel Processing in Python. https://wiki.python.org/moin/ParallelProcessing.
The Jython Project. http://www.jython.org/.
IronPython. https://ironpython.codeplex.com/.
PyPy. http://pypy.org/.
Cython. http://cython.org/.
PyOpenCL. https://mathema.tician.de/software/pyopencl/.
Numba. http://numba.pydata.org/.
Lanaro, G. (2013). Python high performance programming packt.
Palach, J. (2014). Parallel programming with python packt.
Zaccone, G. (2015). Python parallel programming cookbook packt.
Python threading module. https://docs.python.org/3.3/library/threading.html.
Python Multiprocessing module. https://docs.python.org/2/library/multiprocessing.html.
Python mpi4py package. https://pypi.python.org/pypi/mpi4py.
Lee, E.A. (2006). The problem with threads, electrical engineering and computer sciences, University of California, Berkeley. Technical Report No. UCB/EECS-2006-1.
Python’s Hardest Problem. http://jeffknupp.com/blog/2012/03/31/pythons-hardest-problem/.
POSIX Treads. https://computing.llnl.gov/tutorials/pthreads/.
OpenMP. http://openmp.org/wp/.
Microsoft Task Parallel Library (TPL). https://msdn.microsoft.com/enus/library/dd460717(v=vs.110).aspx.
Bogaerts, S., & Stough, J. Parallelism in python for novices, chapter 3 in Prasad, Gupta, Rosenberg, Sussman, and Weems. Topics in parallel and distributed computing: Introducing concurrency in undergraduate courses, 1st edition, Morgan Kaufmann, ISBN: 9780128038994, pages: 360.
MPICH. https://www.mpich.org/.
Open MPI. https://www.open-mpi.org/.
Esmaeilzadeh, H., Blem, E., St. Amant, R., Sankaralingam, K., & Burger, D.C. (2011). Dark silicon and the end of multicore scaling, Proceeding of 38th international symposium on computer architecture (ISCA) (pp. 365–376).
Woo, D. H., & Lee, H. S. (2008). Extending Amdahl’s law for energy-efficient computing in the Many-Core Era. IEEE Computer, 41(12), 24–31.
Fuller, S. H., & Millett, L. I. (2011). Computing performance: game over or next level?. IEEE Computer, 44(1), 31–38.
Marowka, A. (2011). Back to thin-core massively parallel processors. IEEE Computer, 44(12), 49–54.
OpenCL. https://www.khronos.org/opencl/.
OpenACC. http://www.openacc.org/.
Anaconda Accelerate. https://docs.continuum.io/accelerate/.
Anaconda Python. https://www.continuum.io/.
Hinsen, K. Teaching parallel computing in Python. https://khinsen.wordpress.com/2012/02/06/teaching-parallel-computing-in-python/.
Python Code profiling. https://docs.python.org/2/library/profile.html.
Intel VTune Amplifier. https://software.intel.com/en-us/intel-vtune-amplifier-xe.
Intel Trace Analyzer and Collector. https://software.intel.com/en-us/intel-trace-analyzer.
Intel Inspector. https://software.intel.com/en-us/intel-inspector-xe.
PyVmMonitor. http://www.pyvmmonitor.com/.
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Marowka, A. On parallel software engineering education using python. Educ Inf Technol 23, 357–372 (2018). https://doi.org/10.1007/s10639-017-9607-0
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10639-017-9607-0