2a. Demonstrate an understanding of the various programming paradigms within computer science
A paradigm is like a high-level map that shows major roads going from a starting place to a destination. It does not show secondary roads or other details needed to avoid getting lost. Dictionary references give 'model' as a definition for paradigm. A computing paradigm is an approach for going from requirements or a problem to software that satisfies the requirements or solves the problem. A computing paradigm has several phases, including, requirements, design, build, and validate. Computing paradigms employ various technologies. In this course we are interested in those that employ software code to build a solution. A programming paradigm addresses a part of a computing paradigm, namely, going from program design to code. Review the framing text for section 2.1.
For an example of the description of a programming paradigm, reread Functional Programming in Python. That description explains major characteristics of functional programming. Some programming paradigms are explicitly based on mathematical models, for example, functional programming is based on a functional model, and logic programming is based on a symbolic logic model. Review other examples of programming paradigms in Prolog, Logic Programming and Programming Paradigm. In this course, we focus on Object-oriented programming, the OO paradigm. The OO paradigm has become very popular because the OO model of classes and objects closely corresponds to the way people think and communicate. Recall the analogy of ideas to classes and things to objects that you reviewed in Ruby for Beginners: "Object-Oriented Programming". The video Object-Oriented Programming presents an excellent description of the OO paradigm using the programming language Python. It begins by taking the perspective of building solutions to complex problems and gives valuable insight into the key concepts of modularity, composition, hierarchy, and abstraction, which are addressed in the video from 50:00 to the end of the video. Further, it explains 'environments', the technique that is used to represent classes in Python, and which we use to understand the meaning of a Python program. What is generic programming? How is it implemented in Java; in C++? Is generic programming a programming paradigm?
Each paradigm emphasizes a particular approach or technique to problem solving. Having a tool box of well-developed approaches, understanding each approach so as to be able to select the best for a given type of problem, is a major first step in solving the problem.
2b. Demonstrate a detailed understanding of the principle concepts involved in object-oriented programming without regard to any particular programming language
The distinguishing characteristic of an OO model is its focus on 'data', (i.e. 'what' is the structure of the data)) as opposed to operations (i.e. 'how' the data is computed with instructions). OO orientation combines data and instructions into a single entity, an object. OO models are built out of objects. OO programming evolved out of work in software reusability. All programming languages embody to some extent, modularity, composition, hierarchy, and abstraction. OO extends these concepts using classes, objects, inheritance, polymorphism, class libraries, recursion, and parameterized types. Can you explain each of these concepts? Review the framing text for section 2.2 and look over the table of contents for Chapter 5, 9, and 10 in Eck's "Introduction to Programming Using Java".
These concepts of OO are the same for all OO languages, but how they are implemented varies. Further, a programming language, while emphasizing one paradigm, often implements several paradigms. Be able to describe how the concepts of OO programming are implemented in Java. Use the above Eck reference. For comparison to C++, refer to "Comparison of Java and C++". Use the table at the beginning of this article; look for the above concepts and the vocabulary terms below.
'Independence of a particular programming language' can be restated as: the programming concepts are abstracted from particular programming languages. Why is this important? One reason is given by the programming process. The abstract concepts can be used to develop a design that is not constrained by a particular language and the design can be then be implemented using any OO language. Further, the abstract concepts serve as features for comparing the OO languages. Lastly, in your opinion, would you consider generic programming to be a programming paradigm or a programming concept? And why?
Unit 2 Vocabulary
This vocabulary list includes terms that might help you with the review items above and some terms you should be familiar with to be successful in completing the final exam for the course.
Try to think of the reason why each term is included.