Paradigms Of Computer Programming - EdX

1y ago
23 Views
2 Downloads
1.38 MB
11 Pages
Last View : 27d ago
Last Download : 3m ago
Upload by : Maxine Vice
Transcription

Paradigms ofcomputer programmingl Louv1.1x and Louv1.2x form a two-course sequencel l l The two courses cover four important themes:l l l l l Together they teach programming as a unified discipline thatcovers all programming languagesSecond-year university level: requires some programmingexperience and mathematics (sets, lists, functions)Functional programming (and basic data structures)Formal semantics (and computational complexity)Data abstraction (and object-oriented programming)Concurrency (and deterministic dataflow)Let’s see how this works in practiceLouv1.1xLouv1.2x

Hundreds of programminglanguages are in use.

So many, how can weunderstand them all?l l Key insight: languages are based on paradigms,and there are many fewer paradigms than languagesWe can understand many languages by learning few paradigms!

What is aparadigm?l A programming paradigm is an approach toprogramming a computer based on a coherentset of principles or a mathematical theoryl A program is written to solve problemsl l l Any realistic program needs to solve differentkinds of problemsEach kind of problem needs its own paradigmSo we need multiple paradigms and we need tocombine them in the same program

How can we studymultiple paradigms?l l How can we study multiple paradigms without studyingmultiple languages (since most languages only supportone, or sometimes two paradigms)?Each language has its own syntax, its own semantics,its own system, and its own quirksl l l We could pick three languages, like Java, Erlang, and Haskell,and structure our course around themThis would make the course complicated for no good reasonOur pragmatic solution: we use one language, Oz,a research language designed for many paradigmsl l This lets us focus on the real issuesOur textbook, Concepts, Techniques, and Models of ComputerProgramming, uses Oz to cover many paradigms

How can we combineparadigms in a program?l Each paradigm is a different way of thinkingl l How can we combine different ways of thinking in one program?We can do it using the concept of a kernel languagel Each paradigm has a simple core language, its kernel language,that contains its essential conceptsl l l Every practical language, even if it’s complicated, can be translatedeasily into its kernel languageEven very different paradigms have kernel languages that havemuch in common; often there is only one concept differenceWe start with a simple kernel language that underliesour first paradigm, functional programmingl l We then add concepts one by one to give the other paradigmsScientific method: understand a system in terms of its parts

Summary ofthe approachl Hundreds of languages are used in practice: we cannot study themall in one course or in one lifetimel l One language per paradigm is too much to study in a course, sinceeach language is already complicated by itselfl l Solution: focus on paradigms, since each language is based on aparadigm and there there are many fewer paradigms than languagesSolution: use one research language, Oz, that can express manyparadigmsRealistic programs need to combine paradigms, but how can we doit since each paradigm is a different way of thinking?l l Solution: define paradigms using kernel languages, since differentparadigms have kernel languages with much in commonKernel languages allow us to define many paradigms by focusing ontheir differences, which is much more economical in time and effort

Let’s get startedl Probably you already know an object-oriented languagel l l Object-oriented programming, with its coherent principles,is clearly an important paradigmBut what about the other paradigms?Isn’t object-oriented programming by far the mostimportant and useful paradigm?l l l Actually, no, it’s not!Many other paradigms are extremely useful, often more so thanOOP! For example, to make robust and efficient distributedprograms on the Internet, OOP just does not solve the rightproblems. Multi-agent dataflow programming is much better.The two courses cover five paradigms that solve many problems

Fiveparadigmsl The two courses cover five paradigms:l l l l l l Functional programmingObject-oriented programmingDeterministic dataflow programmingMulti-agent dataflow programming (bonus lesson in Louv1.2x)Active objectsThese are probably the most importantprogramming paradigms for general usel But there are many other paradigms, made for otherproblems: these two courses give you a good foundation forstudying them later if you wish

Manyimportant ideasLouv1.2xLouv1.1xl l l l l l l l l l l l l l l Identifiers and environmentsFunctional programmingRecursionInvariant programmingLists, trees, and recordsSymbolic programmingInstantiationGenericityHigher-order programmingComplexity and Big-O notationMoore’s LawNP and NP-complete problemsKernel languagesAbstract machinesMathematical semanticsl l l l l l l l l l l l l l l Explicit stateData abstractionAbstract data types and objectsPolymorphismInheritanceMultiple inheritanceObject-oriented programmingException handlingConcurrencyNondeterminismScheduling and fairnessDataflow synchronizationDeterministic dataflowAgents and streamsMulti-agent programming

Next stepsl Practical organization of Louv1.1xl l l l l 6 lessons 1 final exam1 lesson per weekWeekly exercises (highly recommended)Programming exercisesl INGInious grader: gives feedback on errorsl Mozart Programming SystemOur first paradigm: functional programmingl Interactive examples and fundamental concepts

computer programming ! Louv1.1x and Louv1.2x form a two-course sequence ! Together they teach programming as a unified discipline that covers all programming languages ! Second-year university level: requires some programming experience and mathematics (sets, lists, functions) ! The two courses cover four important themes: !

Related Documents:

Edge.edx.org. is the exploratory domain where educators can create courses and experiment in a low-visibility environment. Edx.org. . EdX Analytics Educators can use the data from the edX Insights Tool to monitor . act

components of EdX consist of three parts known as : EdX studio, Edge and Main EdX LMS. EdX Studio: This part of EdX is designed especially for Instructors or Authors. This provide whole structure and features

Open EdX Open ed-X openedx 6 Do not otherwise vary the appearance of the Open edX trademark by abbreviating it, hyphenating it, incorporating it into acronyms, or changing its spelling or spacing. Always use the Open edX trademark as an adjective, never as a noun or a verb. Always follow the Open edX trademark with a lowercase noun.

Paradigms of Programming Computation is much more fundamental (and older) than computers or computer science. There are several paradigms (aka ways) of specifying computations. But not as many as there are programming languages. Understanding the different paradigms of programming emp

learning extension to Open edX This is planned to be a generic personalized learning solution, when implemented in Open edX will learn about the student's progress and serve up relevant courseware. This will be available in Fall 2016 as an xBlock along with some customizations to Open edX Personalized Learning

Open edX is an open source e-learning platform. Created by MIT and Harvard University, edX is an online service joined by hundreds of leading global institutions and being used by millions of people. Open edX provides a platform for enterprise training and capture tribal knowledge.

Abstract - A Programming Paradigm is the silent intelligence in any software design. Although many Programming Paradigms have evolved, only a few programming paradigms are actively used by the software industry. In addition, many hundreds of programming languages have been developed, but only a few are established and beneficial.

Four Sociological Paradigms In their article "Four Paradigms of Information Systems Development" Hirschheim and Klein use four sociological paradigms suggested by Burrell and Morgan's (1985). Those four sociological paradigms are presented in relation to objective vs. subjective and order vs. conflict dichotomies and here follows the .