Tasarım Kalıplarını Öğretme Stratejileri: Seminer ya da Uygulama

Bilgisayar bilimlerinin bazı temel alan derslerinin etkili bir şekilde öğretilmesi oldukça zordur. Bu derslere Programlamaya Giriş dersleri örnek gösterilebilir. Karşılaşılan bu zorluğun başta gelen ve en önemli sebebi ise bu derslerin içeriğinin soyut yapısı ve dersi alan öğrencilerin bu soyut düşünme yetilerinin henüz gelişmemiş olmasıdır. Genellikle yüksek lisans ve doktora seviyesinde verilen Tasarım Kalıpları dersi içeriğinde de aynı şeyi gözlemlemek kaçınılmazdır. Başta karmaşık gibi görünen ve temelde sınıflar ve nesneler arasındaki yapısal veya davranışsal ilişkilere dayanan bu Tasarım Kalıpları, özellikle yeteri seviyede nesne tabanlı tasarım altyapısına sahip olmayan öğrencileri oldukça zorlamaktadır. Dünyanın hemen her ülkesinde üniversite ve araştırma kuruluşlarında bu dersin anlatımında aynı yöntem kullanılmaktadır. Genellikle seminer şeklinde verilen bu derste, Gamma ve ekibi tarafından yazılan ve çok yaygın etki yaratan Tasarım Kalıpları kitabındaki içerik ve sunum şekli kullanılmaktadır. Bu dersi 2013 yılında ABD'nin New York eyaletindeki Syracuse Üniversitesinde ve 2015 yılında Fırat Üniversitesinin Uluslararası Yüksek Lisans ve Doktora Programında verdiğimiz dönemlerden elde ettiğimiz tecrübelerimize dayanarak, bu çalışmada tasarım kalıplarının uygulamalı proje tasarımı şeklinde nasıl daha etkili öğretilebileceği incelenmektedir. Buna yönelik Factory Method ve Singleton tasarım kalıpları detaylandırılmış ve uygulamalı proje desteği ile bu detayların öğretimine yönelik örnek bir proje taslağı sunulmuştur..

Teaching Strategies For Design Patterns: Seminar Or Projects

It is very difficult to teach some fundamental concepts and topics effectively in computer science. Introductory level programming courses can be a good example for this. The most important reason behind this difficulty is the abstract structure of the content for these subjects and the fact that students taking these introductory courses may not have developed that abstract thinking ability yet. It is inevitable to experience the same difficulties with teaching Design Patterns which are usually taught as a graduate level software engineering course. These patterns rely on structural and behavioral interactions and dependencies between a number of classes and objects and may seem quite complicated at first glance for those who do not have sufficient object oriented design background and experience. The same teaching strategy has been used in many different countries to teach this particular subject. This course is usually offered in a seminar fashion and the content and presentation structure of the widely renowned text book in this field by Gamma et al. is used. In this paper, we investigate how design patterns can be taught more effectively through a mid-size application development, based on the experience we gathered from teaching this subject in two different universities: Syracuse University, NY, USA and Firat University, Elazig, Turkey in 2013 and 2015 respectively. For this, we provide a detailed discussion on Factory Method and Singleton design patterns together with an example application project design to support teaching these details.

___

  • [1] Author. Computer Software and Applications Conference Workshops (COMPSACW), 2012 IEEE 36th Annual. IEEE, 2012.
  • [2] Author. 25th International Conference on Software Engineering and Knowledge Engineering (SEKE). 2013.
  • [3] G. Antoniol, G. Casazza, M. Di Penta, R. Fiutem, "Object-oriented design patterns recovery", Journal of Systems and Software, 59(2), 181-196, 2001.
  • [4] A. B. Tucker, "Strategic directions in computer science education", ACM Computing Surveys (CSUR), 28(4), 836-845, 1996.
  • [5] T. D. Meijler, S. Demeyer, R. Engel, "Making design patterns explicit in face", Software Engineering--ESEC/FSE'97 Springer Berlin Heidelberg, 94-110, 1997.
  • [6] M. Shaw, D. Garlan,Software architecture: perspectives on an emerging discipline. Englewood Cliffs: Prentice Hall, 1996.
  • [7] Mary Shaw. "Patterns for software architecture", Pattern Languages for Program Design 2, Editör: J. M. Vlissides, J. O. Coplien, and N. L. Kerth (Eds.),Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA,255-269, 1996.
  • [8] N. Tsantalis, A. Chatzigeorgiou, G. Stephanides, S. T. Halkidis, "Design pattern detection using similarity scoring",Software Engineering, IEEE Transactions on, 32(11), 896-909, 2006.
  • [9] W. Zimmer, "Relationships between design patterns", Pattern languages of program design, Editör: J. O. Coplien and D. C. Schmidt (Eds.). ACM Press/Addison-Wesley Publishing Co., New York, NY, USA, 345-364, 1995.
  • [10]R. K. Keller, R. Schauer, S. Robitaille, P. Pagé, "Pattern-based reverse-engineering of design components", Proceedings of the 21st international conference on Software engineering, 226-235, 22 May 1999.
  • [11] F. Bergenti, A. Poggi,"Improving UML designs using automatic design pattern detection", 12th International Conference on Software Engineering and Knowledge Engineering (SEKE), 336-343, 2000.
  • [12] G. Costagliola, A. De Lucia, V. Deufemia, C. Gravino, M. Risi,"Design pattern recovery by visual language parsing",Software Maintenance and Reengineering, CSMR, Ninth European Conference on. IEEE,102-111, 2005.
  • [13] Y. Gueheneuc, H. Sahraoui, F. Zaidi,"Fingerprinting design patterns",Reverse Engineering, Proceedings. 11th Working Conference on. IEEE, 172-181, 2004.
  • [14] O. Astrachan, G. Mitchener, G. Berry, L. Cox, "Design patterns: an essential component of CS curricula" ACM SIGCSE Bulletin, 30(1), 153-160, 1998.
  • [15]O. Astrachan,D. Reed, "AAA and CS 1: the applied apprenticeship approach to CS 1",ACM SIGCSE Bulletin, 27(1),1-5, 1995.
  • [16] O. Astrachan, R. Smith,J. Wilkes,"Application-based modules using apprentice learning for CS 2",ACM SIGCSE Bulletin. ACM, 233-237, 1997.
  • [17] E. Wallingford, "Toward a first course based on object-oriented patterns", ACM SIGCSE Bulletin. ACM, 27-31, 1996.
  • [18] B. Ellis, J. Stylos, B. Myers, "The factory pattern in API design: A usability evaluation",Proceedings of the 29th international conference on Software Engineering. IEEE Computer Society,302- 312, 2007.
  • [19]C. Alexander, The timeless way of building, New York: Oxford University Press, 1979.
  • [20]C. Alexander, S. Ishikawa, M. Silverstein, A pattern language: towns, buildings, construction, Oxford University Press, 1977.
  • [21] E. Gamma, R. Helm, R. Johnson, J. Vlissides,Design patterns: elements of reusable object-oriented software. Pearson Education, 1994.
  • [22]J. O. Coplien, D. C. Schmidt,Pattern languages of program design, ACM Press/Addison-Wesley Publishing Co., 1995.
  • [23] H. Albin-Amiot, P. Cointe, Y.-G. Gueheneuc, N. Jussien, "Instantiating and detecting design patterns: putting bits and pieces together," Automated Software Engineering, (ASE). Proceedings. 16th Annual International Conference on, 166-173, 2001.
Bilişim Teknolojileri Dergisi-Cover
  • ISSN: 1307-9697
  • Yayın Aralığı: Yılda 4 Sayı
  • Başlangıç: 2008
  • Yayıncı: Gazi Üniversitesi Bilişim Enstitüsü