Design of a Programming Paradigms Course Using One Single Programming Language

  • Francisco OrtinEmail author
  • Jose Manuel Redondo
  • Jose Quiroga
Conference paper
Part of the Advances in Intelligent Systems and Computing book series (AISC, volume 445)


Undergraduate students of a Software Engineering degree must be able to select the appropriate paradigm to solve a problem. They must also be able to know the foundations of concurrent and parallel programming. In the Software Engineering degree taught in the University of Oviedo, both competencies were assigned to the Programming Technology and Paradigms course. In this article, we present the approach we followed in the design of that course to teach object-oriented, functional, concurrent and parallel programming to second year undergraduate students with basic knowledge of Java. Due to the time limitations of the course, the proposed design uses one single programming language besides Java. We describe the most important challenges we faced and how we addressed them.


Programming paradigms Functional programming Concurrency Parallelism Object orientation Meta-programming C# 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    ACM/IEEE-CS: Computer science curricula 2013: Curriculum Guidelines for Undergraduate Degree Programs in Computer Science (2013)Google Scholar
  2. 2.
    Barnes, D.J., Kölling, M.: Objects First with Java, a Practical Introduction using BlueJ. Prentice Hall (2012)Google Scholar
  3. 3.
    Ortin, F., Labrador, M., Redondo, J.M.: A hybrid class- and prototype-based object model to support language-neutral structural intercession. Information and Software Technology 56(2), pp. 199-219 (2014)Google Scholar
  4. 4.
  5. 5.
    Bracha, G., Odersky, M., Stoutamire, D., Wadler, P. Making the future safe for the past: adding genericity to the Java programming language. In: ACM SIGPLAN conference on object-oriented programming, systems, languages, and applications (OOPSLA), pp. 183-200. Vancouver, British Columbia, Canada (1998).Google Scholar
  6. 6.
    Warburton, R: Java 8 Lambdas: Pragmatic Functional Programming. O’Reilly Media (2014).Google Scholar
  7. 7.
    CS107: Programming Paradigms course, Stanford University, (2015)
  8. 8.
  9. 9.
    ISO/IEC 23270, Information Technology, Programming Languages, C#, (2015)
  10. 10.
  11. 11.
    Goetz, B.: JSR 335: Lambda Expressions for the Java Programming Language, (2015)
  12. 12.
    Dean, J., Ghemawat, S.: MapReduce: Simplified data processing on large clusters. In: Operating Systems Design and Implementation, pp. 137–149. San Francisco, California (2004)Google Scholar
  13. 13.
    λ#, Functional C#, (2015)
  14. 14.
    Almeida, F., Giménez, D., Mantas, J.M., Vidal, A.M.: Sobre el papel de la programación paralela en los nuevos planes de estudios de informática. In: Jornadas sobre la Enseñanza Universitaria de la Informática, pp. 99-106. Barcelona, Spain (2009)Google Scholar
  15. 15.
    Albahari, J: Threading in C#. O’Reilly Media (2011)Google Scholar
  16. 16.
    Amdahl, G.M.: Validity of single-processor approach to achieving large-scale computing capability. In: AFIPS, pp. 483—485, Reston, Virginia (1967)Google Scholar
  17. 17.
    Lea, D. A Java fork / join framework. In: ACM Conference on Java Grande (Java), pp. 36-43. San Francisco, California (2000).Google Scholar
  18. 18.
    Ortin, F., Mendez, S., Garcia-Diaz, V., Garcia, M.: On the suitability of dynamic languages for hot-reprogramming a robotics framework: a Python case study. Software: Practice and Experience 44(1), pp. 77-104 (2014)Google Scholar
  19. 19.
    Bierman, G.M., Meijer, E., Torgersen, M. Adding Dynamic Types to C#. European conference on object-oriented programming (ECOOP), pp. 76-100. Maribor, Slovenia (2010).Google Scholar
  20. 20.
    Ortin, F., Quiroga, J., Redondo, J.M., Garcia, M.: Attaining Multiple Dispatch in Widespread Object-Oriented Languages. Dyna 186, pp. 242-250 (2014)Google Scholar
  21. 21.
    Ortin, F., Diez, D. Designing an adaptable heterogeneous abstract machine by means of reflection. Information and Software Technology 47(2), pp. 81-94 (2005)Google Scholar
  22. 22.
    Ortin, F., Cueva, J.M. Implementing a real computational-environment jump in order to develop a runtime-adaptable reflective platform. ACM SIGPLAN Notices 37(8), pp. 35-44 (2002).Google Scholar
  23. 23.
  24. 24.
    Van Roy, P. Paradigms of Computer Programming, Université Catolique de Louvain (2015).
  25. 25.
    Mozart Consortium. The Mozart Programming System. (2015)
  26. 26.
    Allen, S. C# Programming Paradigms Course. PluralSight. (2015)
  27. 27.
    Bernardy, J.P. Programming Paradigms. Chalmers University of Technology, Göteborg, Sweden. (2015)

Copyright information

© Springer International Publishing Switzerland 2016

Authors and Affiliations

  • Francisco Ortin
    • 1
    Email author
  • Jose Manuel Redondo
    • 1
  • Jose Quiroga
    • 1
  1. 1.Computer Science DepartmentUniversity of OviedoOviedoSpain

Personalised recommendations