Programming with Concurrency

Total Page:16

File Type:pdf, Size:1020Kb

Programming with Concurrency PROGRAMMING WITH CONCURRENCY: BARRIERS TO LEARNING AND EXPLORATIONS IN TEACHING by ZHEN LI (Under the Direction of Eileen Kraemer) ABSTRACT Programming activities are not trivial tasks. Rather, to carry out such complex problem solving tasks, programming expertise developed through long-term experience is required. In contrast, the current landscape of computing demands more reliable and efficient implementations of concurrent software programs. In this thesis work, we research topics in psychology of programming and computer science education with an emphasis on programming with concurrency to inform the fields of psychology of programming, computer science education, empirical software engineering and a broader scope of human factors related fields. We identify the barriers to learning programming with concurrency through review and empirical work. We synthesize the previous research findings with regard to programming expertise, generalize a conceptual framework of the development and application of programming expertise and indicate the importance of the knowledge repository component. We reveal the structure of concurrency-related concepts, and provide insight into the acquisition procedures for such knowledge with our description of a “misconception hierarchy” grounded from qualitative analysis of empirical data. Comprehensive arguments generated through a case study are further provided to describe non-concurrency-related barriers that are critical for students to learn and appreciate programming with concurrency. We conduct explorations on the impact of existing and innovative techniques and course designs used in teaching programming with concurrency topics. We review the pedagogical impact of pair programming and indicate its protective effect on retaining female and less-experienced students through our quasi-experiments. We also reveal the engineering and cognitive effect of pair programming in that pair programming helps students to write code using better style and promotes more comprehensive and critical thinking in earlier phases of software development. We survey curriculum guides on topics regarding programming with concurrency and identify two concurrency models (shared memory versus message passing), three implementation approaches (Threads, Actors, and Coroutines), and several classic scenarios (Bounded Buffer, Dining Philosopher, Sleeping Barber, etc.) to teach in an upper-level undergraduate computer science course. We provide feedback on benefits and drawbacks of this series of pedagogical innovations including flipped classroom design, using a language-independent pseudocode system, and introducing repeated practice with different implementation approaches on a single problem. INDEX WORDS: Psychology of Programming, Computer Science Education, Cognition, Expertise, Concurrent System, Empirical Software Engineering PROGRAMMING WITH CONCURRENCY: BARRIERS TO LEARNING AND EXPLORATIONS IN TEACHING by ZHEN LI B.E. Fudan University, Shanghai, China, 2008 B.S. University College Dublin, Dublin, Ireland, 2008 A Dissertation Submitted to the Graduate Faculty of The University of Georgia in Partial Fulfillment of the Requirements for the Degree DOCTOR OF PHILOSOPHY ATHENS, GEORGIA 2013 © 2013 Zhen Li All Rights Reserved PROGRAMMING WITH CONCURRENCY: BARRIERS TO LEARNING AND EXPLORATIONS IN TEACHING by ZHEN LI Major Professor: Eileen Kraemer Committee: John Miller Tianming Liu Electronic Version Approaved: Maureen Grasso Dean of the Graduate School The University of Georgia August 2013 iv DEDICATION This work is dedicated to all programmers for their creativity in problem solving, all students for their hard work in learning programming and all teachers for their patient guidance along the demanding journey of developing expertise. TABLE OF CONTENTS LIST OF TABLES ............................................................................................................................... VII LIST OF FIGURES ................................................................................................................................ X ACKNOWLEDGEMENT .................................................................................................................... XIII CHAPTER 1. INTRODUCTION ...............................................................................................................1 1.1 THESIS STATEMENTS .......................................................................................................................... 2 1.2 RESEARCH CONTRIBUTIONS ................................................................................................................. 3 1.3 OUTLINE OF THESIS ............................................................................................................................ 5 CHAPTER 2. OVERVIEW OF EMPIRICAL WORK .....................................................................................7 2.1 EMPIRICAL WORK 1: SPRING 2010 ...................................................................................................... 7 2.2 EMPIRICAL WORK 2: SPRING 2012 .................................................................................................... 10 2.3 EMPIRICAL WORK 3: SPRING 2013 .................................................................................................... 13 CHAPTER 3. BARRIERS TO LEARNING ................................................................................................ 20 3.1 PROGRAMMING EXPERTISE ............................................................................................................... 20 3.2 CONCURRENCY-RELATED BARRIERS .................................................................................................... 48 3.3 OTHER BARRIERS ............................................................................................................................. 77 3.4 SUMMARY AND FUTURE WORK ......................................................................................................... 85 CHAPTER 4. EXPLORATIONS IN TEACHING ......................................................................................... 89 4.1 PAIR PROGRAMMING AS A PEDAGOGICAL TECHNIQUE ........................................................................... 90 4.2 IMPACTS OF PAIR PROGRAMMING ...................................................................................................... 93 4.3 CURRICULUM GUIDES AND ELEMENTS OF TEACHING CONCURRENCY ...................................................... 113 4.4 TEACHING PROGRAMMING WITH CONCURRENCY ................................................................................ 128 4.5 SUMMARY AND FUTURE WORKS ...................................................................................................... 140 CHAPTER 5. CONCLUSIONS AND CONTRIBUTIONS ........................................................................... 142 REFERENCES .................................................................................................................................. 147 CHAPTER 6. APPENDIX ................................................................................................................... 157 6.1 DATA AND ANALYSIS PROCESSES ...................................................................................................... 157 6.2 PROGRAMS USED IN THESIS WORK .................................................................................................. 166 6.3 MATERIALS FROM SPRING 2010 WORK ............................................................................................ 170 6.4 MATERIALS FROM SPRING 2012 WORK ............................................................................................ 184 6.5 MATERIALS FROM SPRING 2013 WORK ............................................................................................ 250 vii LIST OF TABLES TABLE 1 OVERVIEW OF WORK CONTRIBUTING TO IDENTIFY BARRIERS TO LEARNING ..................................................... 20 TABLE 2 REINTERPRETATIONS OF STUDY RESULTS ABOUT STRUCTURED VERSUS OPPORTUNISTIC DESIGN BEHAVIORS ......... 25 TABLE 3 REINTERPRETATIONS OF STUDY RESULTS ABOUT PROGRAM PLAN THEORY ...................................................... 28 TABLE 4 REINTERPRETATIONS OF EMPIRICAL STUDY RESULTS ABOUT MEMORY AND RECALL .......................................... 32 TABLE 5 REINTERPRETATIONS OF EMPIRICAL RESULTS ABOUT OTHER MENTAL MODEL THEORY ...................................... 35 TABLE 6 REINTERPRETATIONS OF EMPIRICAL STUDY RESULTS ABOUT PRODUCTION VERSUS COMPREHENSION .................. 38 TABLE 7 REINTERPRETATIONS OF EMPIRICAL STUDY RESULTS ABOUT BUG GENERATION ................................................ 39 TABLE 8 REINTERPRETATIONS OF EMPIRICAL RESULTS ABOUT HYPOTHESIS-DRIVEN DEBUGGING BEHAVIORS .................... 41 TABLE 9 REINTERPRETATIONS OF EMPIRICAL STUDY RESULTS ABOUT CHARACTERS OF DEBUGGING BEHAVIORS ................. 41 TABLE 10 REINTERPRETATIONS OF EMPIRICAL RESULTS ABOUT DATA-DRIVEN DEBUGGING BEHAVIORS............................ 43 TABLE 11 QUESTIONS WITH SIMILAR METRIC AND DIFFERENT PERFORMANCE ............................................................. 56 TABLE 12 INITIAL MISCONCEPTION PYRAMID TABLE ............................................................................................... 59 TABLE 13 SAMPLE PSEUDOCODE ELEMENTS NOT RELATED TO CONCURRENCY ............................................................. 62 TABLE 14 PSEUDOCODE EXTENSIONS ON CONCURRENCY .......................................................................................
Recommended publications
  • Object Oriented Programming
    No. 52 March-A pril'1990 $3.95 T H E M TEe H CAL J 0 URN A L COPIA Object Oriented Programming First it was BASIC, then it was structures, now it's objects. C++ afi<;ionados feel, of course, that objects are so powerful, so encompassing that anything could be so defined. I hope they're not placing bets, because if they are, money's no object. C++ 2.0 page 8 An objective view of the newest C++. Training A Neural Network Now that you have a neural network what do you do with it? Part two of a fascinating series. Debugging C page 21 Pointers Using MEM Keep C fro111 (C)rashing your system. An AT Keyboard Interface Use an AT keyboard with your latest project. And More ... Understanding Logic Families EPROM Programming Speeding Up Your AT Keyboard ((CHAOS MADE TO ORDER~ Explore the Magnificent and Infinite World of Fractals with FRAC LS™ AN ELECTRONIC KALEIDOSCOPE OF NATURES GEOMETRYTM With FracTools, you can modify and play with any of the included images, or easily create new ones by marking a region in an existing image or entering the coordinates directly. Filter out areas of the display, change colors in any area, and animate the fractal to create gorgeous and mesmerizing images. Special effects include Strobe, Kaleidoscope, Stained Glass, Horizontal, Vertical and Diagonal Panning, and Mouse Movies. The most spectacular application is the creation of self-running Slide Shows. Include any PCX file from any of the popular "paint" programs. FracTools also includes a Slide Show Programming Language, to bring a higher degree of control to your shows.
    [Show full text]
  • Using the GNU Compiler Collection (GCC)
    Using the GNU Compiler Collection (GCC) Using the GNU Compiler Collection by Richard M. Stallman and the GCC Developer Community Last updated 23 May 2004 for GCC 3.4.6 For GCC Version 3.4.6 Published by: GNU Press Website: www.gnupress.org a division of the General: [email protected] Free Software Foundation Orders: [email protected] 59 Temple Place Suite 330 Tel 617-542-5942 Boston, MA 02111-1307 USA Fax 617-542-2652 Last printed October 2003 for GCC 3.3.1. Printed copies are available for $45 each. Copyright c 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with the Invariant Sections being \GNU General Public License" and \Funding Free Software", the Front-Cover texts being (a) (see below), and with the Back-Cover Texts being (b) (see below). A copy of the license is included in the section entitled \GNU Free Documentation License". (a) The FSF's Front-Cover Text is: A GNU Manual (b) The FSF's Back-Cover Text is: You have freedom to copy and modify this GNU Manual, like GNU software. Copies published by the Free Software Foundation raise funds for GNU development. i Short Contents Introduction ...................................... 1 1 Programming Languages Supported by GCC ............ 3 2 Language Standards Supported by GCC ............... 5 3 GCC Command Options .........................
    [Show full text]
  • End-User Debugging for E-Commerce
    End-User Debugging for E-Commerce Henry Lieberman Earl Wagner MIT Media Lab 20 Ames St, Cambridge, MA 02139 USA {lieber, ewagner}@media.mit.edu ABSTRACT another phone number to be dialed. It might ask for card numbers or transaction numbers that aren’t readily at hand, and have to One of the biggest unaddressed challenges for the digital looked up offline. If someone in customer service is successfully economy is what to do when electronic transactions go wrong. reached, that person (often a low-paid worker in a high-pressure Consumers are frustrated by interminable phone menus, and long call center) may specify a tedious process to be performed. They delays to problem resolution. Businesses are frustrated by the may not be empowered to actually understand or fix the problem high cost of providing quality customer service. themselves. Customers find themselves bounced endlessly from We believe that many simple problems, such as mistyped one support person to another. All of us have had these kinds of numbers or lost orders, could be easily diagnosed if users were experiences. supplied with end-user debugging tools, analogous to tools for Customer service problems are incredibly frustrating. Not only do software debugging. These tools can show the history of actions they cause frustration about the immediate transaction, they also and data, and provide assistance for keeping track of and testing poison the relationship between customers and vendors. hypotheses. These tools would benefit not only users, but Customers feel like they are being deflected, that they are not businesses as well by decreasing the need for customer service.
    [Show full text]
  • Seashore Guide
    Seashore The Incomplete Guide Contents Contents..........................................................................................................................1 Introducing Seashore.......................................................................................................4 Product Summary........................................................................................................4 Technical Requirements ..............................................................................................4 Development Notice....................................................................................................4 Seashore’s Philosophy.................................................................................................4 Seashore and the GIMP...............................................................................................4 How do I contribute?...................................................................................................5 The Concepts ..................................................................................................................6 Bitmaps.......................................................................................................................6 Colours .......................................................................................................................7 Layers .........................................................................................................................7 Channels ..................................................................................................................
    [Show full text]
  • Edsger W. Dijkstra: a Commemoration
    Edsger W. Dijkstra: a Commemoration Krzysztof R. Apt1 and Tony Hoare2 (editors) 1 CWI, Amsterdam, The Netherlands and MIMUW, University of Warsaw, Poland 2 Department of Computer Science and Technology, University of Cambridge and Microsoft Research Ltd, Cambridge, UK Abstract This article is a multiauthored portrait of Edsger Wybe Dijkstra that consists of testimo- nials written by several friends, colleagues, and students of his. It provides unique insights into his personality, working style and habits, and his influence on other computer scientists, as a researcher, teacher, and mentor. Contents Preface 3 Tony Hoare 4 Donald Knuth 9 Christian Lengauer 11 K. Mani Chandy 13 Eric C.R. Hehner 15 Mark Scheevel 17 Krzysztof R. Apt 18 arXiv:2104.03392v1 [cs.GL] 7 Apr 2021 Niklaus Wirth 20 Lex Bijlsma 23 Manfred Broy 24 David Gries 26 Ted Herman 28 Alain J. Martin 29 J Strother Moore 31 Vladimir Lifschitz 33 Wim H. Hesselink 34 1 Hamilton Richards 36 Ken Calvert 38 David Naumann 40 David Turner 42 J.R. Rao 44 Jayadev Misra 47 Rajeev Joshi 50 Maarten van Emden 52 Two Tuesday Afternoon Clubs 54 2 Preface Edsger Dijkstra was perhaps the best known, and certainly the most discussed, computer scientist of the seventies and eighties. We both knew Dijkstra |though each of us in different ways| and we both were aware that his influence on computer science was not limited to his pioneering software projects and research articles. He interacted with his colleagues by way of numerous discussions, extensive letter correspondence, and hundreds of so-called EWD reports that he used to send to a select group of researchers.
    [Show full text]
  • Relationships Between Category Theory and Functional Programming with an Application
    Turkish Journal of Mathematics Turk J Math (2019) 43: 1566 – 1577 http://journals.tubitak.gov.tr/math/ © TÜBİTAK Research Article doi:10.3906/mat-1807-189 Relationships between category theory and functional programming with an application Alper ODABAŞ∗,, Elis SOYLU YILMAZ, Department of Mathematics and Computer Sciences, Faculty of Arts and Sciences, Eskişehir Osmangazi University, Eskişehir, Turkey Received: 25.07.2018 • Accepted/Published Online: 08.04.2019 • Final Version: 29.05.2019 Abstract: The most recent studies in mathematics are concerned with objects, morphisms, and the relationship between morphisms. Prominent examples can be listed as functions, vector spaces with linear transformations, and groups with homomorphisms. Category theory proposes and constitutes new structures by examining objects, morphisms, and compositions. Source and target of a morphism in category theory corresponds to input and output in programming language. Thus, a connection can be obtained between category theory and functional programming languages. From this point, this paper constructs a small category implementation in a functional programming language called Haskell. Key words: Category theory, functional programming, Haskell 1. Introduction Eilenberg and MacLane ([7]) are the pioneers who built the structures of the categories, functors, and natural transformations which are revealed first in 1945. A broader literature review reveals an important connection between homology and theoretical homology theory. These findings relieve mathematics from theoretical constraint and enables branches of science to involve the above relationship. The most significant transition in computer science is between category theory and computation. Oneof the most important aspects of computation is composing the new functions or modules by using the primitive functions, recursive structures, etc.
    [Show full text]
  • XAVIER CANAL I MASJUAN SOFTWARE DEVELOPER - BACKEND C E N T E L L E S – B a R C E L O N a - SPAIN
    XAVIER CANAL I MASJUAN SOFTWARE DEVELOPER - BACKEND C e n t e l l e s – B a r c e l o n a - SPAIN EXPERIENCE R E D H A T / K i a l i S OFTWARE ENGINEER Barcelona / Remote Kiali is the default Observability console for Istio Service Mesh deployments. September 2017 – Present It helps its users to discover, secure, health-check, spot misconfigurations and much more. Full-time as maintainer. Fullstack developer. Five people team. Ownership for validations and security. Occasional speaker. Community lead. Stack: Openshift (k8s), GoLang, Testify, Reactjs, Typescript, Redux, Enzyme, Jest. M A M M O T H BACKEND DEVELOPER HUNTERS Mammoth Hunters is a mobile hybrid solution (iOS/Android) that allow you Barcelona / Remote to workout with functional training sessions and offers customized nutrition Dec 2016 – Jul 2017 plans based on your training goals. Freelancing part-time. Evangelizing test driven development. Owning refactorings against spaghetti code. Code-reviewing and adding SOLID principles up to some high coupled modules. Stack: Ruby on Rails, Mongo db, Neo4j, Heroku, Slim, Rabl, Sidekiq, Rspec. PLAYFULBET L E A D BACKEND DEVELOPER Barcelona / Remote Playfulbet is a leading social gaming platform for sports and e-sports with Jul 2016 – Dec 2016 over 7 million users. Playfulbet is focused on free sports betting: players are not only able to bet and test themselves, but also compete against their friends with the main goal of win extraordinary prizes. Freelancing part-time. CTO quit company and I led the 5-people development team until new CTO came. Team-tailored scrum team organization.
    [Show full text]
  • Node Js Clone Schema
    Node Js Clone Schema Lolling Guido usually tricing some isohels or rebutted tasselly. Hammy and spacious Engelbert socialising some plod so execrably! Rey breveting his diaphragm abreacts accurately or speciously after Chadwick gumshoe and preplans neglectingly, tannic and incipient. Mkdir models Copy Next felt a file called sharksjs to angle your schema. Build a Twitter Clone Server with Apollo GraphQL Nodejs. To node js. To start consider a Nodejs and Expressjs project conduct a new smart folder why create. How to carriage a JavaScript object Flavio Copes. The GitHub repository requires Nodejs 12x and Python 3 Before. Dockerizing a Nodejs Web Application Semaphore Tutorial. Packagejson Scripts AAP GraphQL Server with NodeJS. Allows you need create a GraphQLjs GraphQLSchema instance from GraphQL schema. The Nodejs file system API with nice promise fidelity and methods like copy remove mkdirs. Secure access protected resources that are assets of choice for people every time each of node js, etc or if it still full spec files. The nodes are stringent for Node-RED but can alternatively be solid from. Different Ways to Duplicate Objects in JavaScript by. Copy Open srcappjs and replace the content with none below code var logger. Introduction to Apollo Server Apollo GraphQL. Git clone httpsgithubcomIBMcrud-using-nodejs-and-db2git. Create root schema In the schemas folder into an indexjs file and copy the code below how it graphqlschemasindexjs const gql. An api requests per user. Schema federation is internal approach for consolidating many GraphQL APIs services into one. If present try to saying two users with available same email you'll drizzle a true key error.
    [Show full text]
  • Glossary of Technical and Scientific Terms (French / English
    Glossary of Technical and Scientific Terms (French / English) Version 11 (Alphabetical sorting) Jean-Luc JOULIN October 12, 2015 Foreword Aim of this handbook This glossary is made to help for translation of technical words english-french. This document is not made to be exhaustive but aim to understand and remember the translation of some words used in various technical domains. Words are sorted alphabetically. This glossary is distributed under the licence Creative Common (BY NC ND) and can be freely redistributed. For further informations about the licence Creative Com- mon (BY NC ND), browse the site: http://creativecommons.org If you are interested by updates of this glossary, send me an email to be on my diffusion list : • [email protected][email protected] Warning Translations given in this glossary are for information only and their use is under the responsability of the reader. If you see a mistake in this document, thank in advance to report it to me so i can correct it in further versions of this document. Notes Sorting of words Words are sorted by alphabetical order and are associated to their main category. Difference of terms Some words are different between the "British" and the "American" english. This glossary show the most used terms and are generally coming from the "British" english Words coming from the "American" english are indicated with the suffix : US . Difference of spelling There are some difference of spelling in accordance to the country, companies, universities, ... Words finishing by -ise, -isation and -yse can also be written with -ize, Jean-Luc JOULIN1 Glossary of Technical and Scientific Terms -ization and -yze.
    [Show full text]
  • Static Analysis of a Concurrent Programming Language by Abstract Interpretation
    View metadata, citation and similar papers at core.ac.uk brought to you by CORE provided by Concordia University Research Repository STATIC ANALYSIS OF A CONCURRENT PROGRAMMING LANGUAGE BY ABSTRACT INTERPRETATION Maryam Zakeryfar A thesis in The Department of Computer Science and Software Engineering Presented in Partial Fulfillment of the Requirements For the Degree of Doctor of Philosophy (Computer Science) Concordia University Montreal,´ Quebec,´ Canada March 2014 © Maryam Zakeryfar, 2014 Concordia University School of Graduate Studies This is to certify that the thesis prepared By: Mrs. Maryam Zakeryfar Entitled: Static Analysis of a Concurrent Programming Language by Abstract Interpretation and submitted in partial fulfillment of the requirements for the degree of Doctor of Philosophy (Computer Science) complies with the regulations of this University and meets the accepted standards with respect to originality and quality. Signed by the final examining committee: Dr. Deborah Dysart-Gale Chair Dr. Weichang Du External Examiner Dr. Mourad Debbabi Examiner Dr. Olga Ormandjieva Examiner Dr. Joey Paquet Examiner Dr. Peter Grogono Supervisor Approved by Dr. V. Haarslev, Graduate Program Director Christopher W. Trueman, Dean Faculty of Engineering and Computer Science Abstract Static Analysis of a Concurrent Programming Language by Abstract Interpretation Maryam Zakeryfar, Ph.D. Concordia University, 2014 Static analysis is an approach to determine information about the program without actually executing it. There has been much research in the static analysis of concurrent programs. However, very little academic research has been done on the formal analysis of message passing or process-oriented languages. We currently miss formal analysis tools and tech- niques for concurrent process-oriented languages such as Erasmus .
    [Show full text]
  • Sleeping Barber
    Sleeping Barber CSCI 201 Principles of Software Development Jeffrey Miller, Ph.D. [email protected] Outline • Sleeping Barber USC CSCI 201L Sleeping Barber Overview ▪ The Sleeping Barber problem contains one barber and a number of customers ▪ There are a certain number of waiting seats › If a customer enters and there is a seat available, he will wait › If a customer enters and there is no seat available, he will leave ▪ When the barber isn’t cutting someone’s hair, he sits in his barber chair and sleeps › If the barber is sleeping when a customer enters, he must wake the barber up USC CSCI 201L 3/8 Program ▪ Write a solution to the Sleeping Barber problem. You will need to utilize synchronization and conditions. USC CSCI 201L 4/8 Program Steps – main Method ▪ The SleepingBarber will be the main class, so create the SleepingBarber class with a main method › The main method will instantiate the SleepingBarber › Then create a certain number of Customer threads that arrive at random times • Have the program sleep for a random amount of time between customer arrivals › Have the main method wait to finish executing until all of the Customer threads have finished › Print out that there are no more customers, then wake up the barber if he is sleeping so he can go home for the day USC CSCI 201L 5/8 Program Steps – SleepingBarber ▪ The SleepingBarber constructor will initialize some member variables › Total number of seats in the waiting room › Total number of customers who will be coming into the barber shop › A boolean variable indicating
    [Show full text]
  • University of Vaasa
    UNIVERSITY OF VAASA FACULTY OF TECHNOLOGY DEPARTMENT OF COMPUTER SCIENCE Arvi Lehesvuo A SOFTWARE FRAMEWORK FOR STORING USER WORKSPACES OF DESKTOP APPLICATIONS Master’s thesis in Technology for the degree of Master of Science in Technology submitted for inspection, Vaasa, June 30, 2012. Supervisor Prof. Jouni Lampinen Instructor M.Sc. Pasi Pelkkikangas 1 TABLE OF CONTENTS page ABBREVIATIONS 3 LIST OF FIGURES 4 TIIVISTELMÄ 5 ABSTRACT 6 1. INTRODUCTION 7 1.1. Company Introduction: Wapice Ltd 8 1.2. Professional Background Statement 9 1.3. The Scope of the Research 9 1.4. Research Questions 10 2. RESEARCH METHODOLOGY 12 2.1. Constructive Research Approach 12 2.2. Research Process as Applied in This Research 13 3. THEORY AND BACKGROUND OF THE STUDY 17 3.1. Introduction to the Subject 17 3.2. History of Object Oriented Programming 17 3.3. Most Central Elements in Object Oriented Programming 19 3.4. More Advanced Features of Object Oriented Programming 25 3.5. Software Design Patterns 27 3.6. Graphical User Interface Programming 34 4. DEVELOPING THE SOLUTION 39 4.1. Identifying the Solution Requirements 39 4.2. Designing Basic Structure for the Solution 43 4.3. Building the Solution as an External Software Component 47 4.4. Storing the User Data 48 4.5. Optimizing Construction for C# 51 2 5. EVALUATING PRACTICAL RELEVANCE OF THE DESIGN 54 5.1. Testing Design by applying it to Different GUI Design Models 54 5.2. Analyzing Results of the User Questionnaire 57 6. CONCLUSIONS AND FUTURE 61 6.1. Practical Contribution 62 6.2.
    [Show full text]