Question: Discrete Mathematics Computer Science 2430 Programming project 0 This really is not a project that you will need to code, but an investigation you will

Discrete Mathematics

Computer Science 2430

Programming project 0

This really is not a project that you will need to code, but an investigation you will do about coding.

At this point in your life, you have probably been coding in Java, an object oriented language for most of your school work (and perhaps for most of your work outside of school as well). Object oriented languages have given us a very powerful tool to analyze complex problems in a way that is very similar to how our brains deal with complexity. Object oriented programming is not the only programing paradigm (or architectural paradigm, or architecture) out there. Many of the other paradigms have been driven by the need to solve different types of problems (or to solve them more efficiently).

I would go so far as to say that high level programming required a paradigm shift before it could occur. Much of the modern web interface required a paradigm shift (you can enter data in any field, in any order, without training) required a paradigm shift. And much of the revolution of AI is being driven, in part, by a paradigm shift (to choose only a few examples). (Google the Sapir Whorf hypothesis if you have a few minutes). This is not to say that the old paradigms, architectures, or languages were bad, or incomplete, just that sometimes to solve new problems you need new tools.

This assignment will help you think about some of the more common paradigms out there, why they were designed they way they are, and when they might be used.

Please note that a change of programming paradigm is not just swapping out one language for another, but is often a different way to think about and solve problems.

There are a number of good web sites out there, google is your friend

Please answer the following questions.

  1. Describe at least three programming paradigms.
  2. For each paradigm you have described, answer the following.
    1. What type(s) of problems does this solve easily (you dont need to go into great detail here, you can find entire websites full of passionate detail, I just want a sentence or two)?
    2. What type(s) of problems does this paradigm not solve well?
    3. Give at least one language designed to support this paradigm. What about this language makes it useful when designing and coding to this paradigm?
    4. Give at least one resource for finding out more about that language
  3. At several points during the semester, we will look at mathematical concepts that are treated differently in different paradigms (and even a few that were instrumental in causing new paradigms to be developed). (Please note there is no wrong answer to this question). For each paradigm you describe, state your level of familiarity with it and any coding you might have done using this paradigm in the past.

Since different paradigms often present dramatically different ways of solving problems. Its often recommended (and I also think its a really good idea), to get some familiarity with different paradigms. One common recommendation is to become very familiar with at least one language in one paradigm (you will probably hit this level in object oriented programming using Java). Have an introduction to another language using that paradigm (such as C# with the object oriented paradigm). Finally, have an introduction to programming in at least one other paradigm and understand how to do things differently in that second paradigm.

Im not expecting you to do any of this here in this class, but the ability to solve problems using different approaches, or choosing the best approach to solve a particular problem, is a very useful skill (and one that I expect all of my employees to have).

  1. Write down a paragraph or two about how you could learn more about solving problems, and coding in a different paradigm.

Its not only programming paradigms that affect how code is structured and the nature of coding. Software architectures also affect, on a fundamental level, how code is written and the assumptions that developers make when designing code.

  1. How do software architectures differ from programming paradigms?
  1. Choose at least three different architectural styles and/or patterns and describe them briefly.
  2. Write down a paragraph or two about how you could learn more about solving problems, and coding in a different paradigm.

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!