In Our Scientific Computing Course, 2020S, We Will Utilize These Coding

Total Page:16

File Type:pdf, Size:1020Kb

In Our Scientific Computing Course, 2020S, We Will Utilize These Coding In our Scientific Computing course, 2020S, we will utilize these coding languages and packages: python (including NumPy, SciPy, SymPy, MatplotliB, IPython=Jupyter, Spyder) SageMath (built on top of Python, uses Jupyter) MATLAB Scilab (similar to Matlab) Of these, python is a GPL (general purpose language) and is a low- to medium-level language. The packages used with python are high-level (Numpy, Scipy, Sympy, Matplotlib, etc.). Python code can be run as scripts (interpreted) or can also be compiled into machine code. What does all of this mean? What is the big picture of coding languages and mathematical software? Glossary of terms: Assembly Language = one step beyond machine code; in fact, it is just machine code translated into human-readable language. Class = type of object in OOP Client side program = code run on the computer of the person running the code. Cloud computing = type of distributed computing done over the web. (eg – BOINC used for SETI.) Coding = programming Compiler = program that converts code into machine code CPU = central processing unit Developer = fancy name for “programmer” or “coder” Distributed computing = when a program is run by many different computers at the same time - -- eg SETI (search for extraterrestrial intelligence). DSL = domain specific language (Matlab, Mathematica) GNU = GNU’s not Unix GPL = general purpose language (Unix, Fortran, C, Java) GUI = graphical user interface Interpreted language = same as scripting language. Method = function of inputs that produces an output, used in OOP. Object = a thing that has attributes, properties, sometimes data, and also has methods associated to it that can act on it. OOP = object-oriented programming (also just OO) Open-source software = code people can modify and share because design and code are accessible. Can be publicly, collaboratively developed. Machine code: the language (like 0’s and 1’s, binary data or hexadecimal data) that can be inputted into a CPU and executed. Multi-paradigm languages – support different types of programming (eg both procedural and OOP and ….) – most modern languages are like this. In the newer ones, different types of syntax can be used. Parallel computing – where more than one computation is done by the computer at the same time. The number of nodes is the number of things that can be done at the same time. Procedural programming – standard linear “do this, then do that using this variable” programming RAD = rapid application development RAM = random access memory Scripting language – one where a program can be executed without being compiled first into machine language. Same as “interpreted language” Server = a typically big computer that is a central hub of a network. Server-side code = code that it run on a server that can be accessed by other computers over the network or internet. Syntax – the spelling and grammar of computer coding – punctuation, formatting of how to make statements in the code. Virtual machine – platform in one language placed inside another platform; eg – Java VM run on top of an operating system, so that Java code can be run interpretively. The lowest-level coding is machine coding. But you also call the most rudimentary languages low-level, ones that really don’t abstract anything beyond what the computer’s architecture can do. High-level coding means that one coding language makes complicated functions that use the functions of another language, which in turn uses the functions of a low-level language. All of today’s programmers code in high-level languages. (I will call the typical high-level coding languages medium level (like C, java, C++, Fortran) and the much more abstracted languages (like MATLAB, R, Mathematica) very high level.) Medium-level languages (C, C++, Fortran) are faster but cumbersome to program and debug. High-level languages are 1.4(Python) to 4(Mathematica) times slower but are easier to code when working with complicated algorithms. Here are some language descriptions from medium level to the highest level. First, GPLs and Mathematical Software: C, Unix, Fortran are basic infrastructure/building blocks procedural languages Linux source code is written in C (although, really unix) C, C+, C++, C# (MS rival to Java), Java (Linux is C-based) Used by software developers, computer engineers, business and systems analysts, IT, web admins, used in management companies. Used by Microsoft, Apple, Oracle, Cisco, etc. Dev in 1972 C++ is OO, mid-level Used by software engineers, developers, IT, Engineering, Management of businesses, etc. Used by Google, Mozila, Winamp, Adobe, Amazon, Lockheed Martin C++ released in 1983 C# is used by for automation, web developers, etc. C# is used by Microsoft, HP C# developed in 2000 Objective-C used by IT, web developers, iOS, Android apps dev by Apple in 1983 F# (GPL, multi-paradigm) Dev/rel 2005 Java (does everything, evolved from C++, key is virtual machine (VM) that performs JIT(just in time)) GPL, OO, High-level, used by software engineers, web developers, Uswed by Ebay, Eclipse, internet of things, cloud computing, enterprise architecture Adobe Creative Suite, Eclipse, Lotus, Mincraft, OpenOffice written in Java. (dev in 1990 at Sun, publicly introd in 1995) Pascal, Basic (ancient, user-friendly procedural languages) Dev/rel 1970; dev/rel in 1964 Visual Basic .NET (scripting for Windows computers, object and event-based) Intr in 1991 python (NumPy, SymPy, Matplotlib) (used by Google, Pinterest, Instagram, YouTube, DropBox, NASA, ESRI – env sys research inst – GIS, developed in late 1980s, released to public in 1991) (used in web/internet development, scientific and numerical computation, desktop GUIs, suitable for RAD, a lot of AI programs including those used in gaming) Ipython – interactive command shell for python (and other programming languages), Jupyter has notebook interface, mathematical expressions, inline plots, etc, support for GUI toolkits. Provides parallel and distributed computing. SageMath (open source symbolic computation software, written in python) “System for Algebra and Geometry Experimentation” Developed/released in 2005 GAP is part of SageMath MATLAB (mathematical programming, nice for linear algebra and numerical packages) Dev in late 1970s, first written in Fortran, then later in C/C++, Java (GNU=GNU’s not Unix, mass collaboration project announced in 1983) GNU Octave (Written in C/C++, Fortran), mostly compatible with MATLAB, using Xoctave as front end. Also: Octave Online, QTOctave. Dev/Rel in 1994 Scilab (w latest frontend) (alternative to Matlab, written in C/C++, Java, Fortran) Dev in 1990, released in 2009 Mathematica (Wolfram – symbolic mathematical computational and graphics package) Released in 1988, written in C/C++, Java Scala (runs on Java VM) Dev/ rel in 2004 Swift (open sourced scripting language, for Apple stuff, based on Objective C) Used by software dev, esp for iOS and OSX, IT Used by Apple, Dow Jones Introduced in 2014 Ruby (scripting, for web development), Ruby on Rails Open-sourced, OO scripting language Used in data science, web development, robotics, networking, system admin & security, 3d modeling, Used by Github, Scribd, Groupon, NASA, Motorola, Toyota, Google Sketchup, Amazon, Twitter Dev in 1995. Rust (systems programming, multiparadigm) Dev/rel 2010 Go (Golang, scripting language, introduced by Google, similar to C, multi-paradigm) Dev in 2007, rel 2009 Statistical Software: SAS (statistical package) Dev/rel in 1976 Stata (statistical package, written in C) Dev /rel in 1985 R (high-level, interpreted language, open source, for statistical programming and graphics, some big data use) written in C, the first version was “S”. (Recommended: download RStudio) Dev in 1992/3, released in 1995-2000. Julia (high-level, for data manipulation, open source, works well with parallel computing and cloud computing, similar syntax to Matlab and R) Dev in 2009 / released in 2012 Coding specifically for the Internet: Html (basic web page development) Used by weB developers, email designers, software engineers, IT, engineering design, Used by Apple, Apex, etc. Dev in 1990 Javascript (weB client-side scripting version of C++/java, works on client computer; makes web pages dynamic/interactive) Used by web developers, software engineers, design, marketing, finance, healthcare) Used by Wordpress, Khan Academy, LinkedIn, Groupon, all websites. Dev in 1995 JQuery – javascript library math.js – math library for Javascript mathjax: javascript display engine for latex math PHP (open source, server-side scripting language, used on the web to write to files, process forms, databases, generates web dynamic content) Used by web developers, it, management of industries Used by any web pages like Facebook, Wordpress, etc. Released in 1995 SQL (database query language) Used by IT, Engineering, management of business, data gathering industries. Used in Data analysis and big data mining Dev by IBM in 1974 as SEQUEL BOINC (open source, “middle-ware”, cloud computing platform) Dev originally for SETI in 2002. TIOBE Index for December 2019 December Headline: The winners continue to win TIOBE will announce the programming language of the year next month. There are 4 candidates for this title: Java (+1.3%), C (+1.8%), Python (+1.9%) and C# (+1.4%). These 4 languages are all in the top 5. Only C++ lost some ranking points in 2019. Python is top favorite for the title. It was already programming language of the year 2018, but its popularity keeps growing. This is mainly due to the lack of programmers in the world and the ease of learning this language if compared to other languages. C is also doing well thanks to the rise of Internet of Things. Why Java and C# are doing well is unclear, but it would be the first time that C# becomes the programming language of the year. Let's see what will happen next month! The TIOBE Programming Community index is an indicator of the popularity of programming languages. The index is updated once a month. The ratings are based on the number of skilled engineers world-wide, courses and third party vendors.
Recommended publications
  • Fortran Isolates the CSE Community
    Fortran Isolates the CSE Community Roscoe A. Bartlett, Oak Ridge National Laboratory 10/08/2013 Introduction testing and test-driven development (TDD) by Fortran-only developers. While the research and The continued usage of Fortran as a dominant data supporting the effectiveness of unit testing and programming language isolates the computational TDD has been around for many years [10, 3, 12, 7], science & engineering (CSE) community and hinders the usage of these very successful approaches is very the learning and adoption of modern software low in the Fortran CSE development community. engineering methods. The issue is not primarily that This claim is backed up by personal experience, web Fortran is not suitable for developing many different posts, web searches, and observations by other types of software. Indeed, the are many examples of authors. One interesting data point is that a Google quality CSE software written in Fortran that can search of \Fortran Unit Test" (on 10/4/2013) brings legitimately be considered to be \self-sustaining up a limited number of relevant search results but software" (i.e. clean design and code, well tested, the top result is for the FRUIT Fortran Unit Test minimal controlled dependencies, etc., see [1]). framework [5] (written in Ruby). Right on the main The problem is that there are many CSE page for FRUIT is a quote from FRUIT's author development groups and communities that only Andrew Hang Chen which states: know Fortran and are therefore isolated from the broader software development community where Most of the FORTRAN are important Fortran usage is extremely low (ranked 24th in the in nature, used in nuclear and aerospace TIOBE Index from Nov.
    [Show full text]
  • Sagemath and Sagemathcloud
    Viviane Pons Ma^ıtrede conf´erence,Universit´eParis-Sud Orsay [email protected] { @PyViv SageMath and SageMathCloud Introduction SageMath SageMath is a free open source mathematics software I Created in 2005 by William Stein. I http://www.sagemath.org/ I Mission: Creating a viable free open source alternative to Magma, Maple, Mathematica and Matlab. Viviane Pons (U-PSud) SageMath and SageMathCloud October 19, 2016 2 / 7 SageMath Source and language I the main language of Sage is python (but there are many other source languages: cython, C, C++, fortran) I the source is distributed under the GPL licence. Viviane Pons (U-PSud) SageMath and SageMathCloud October 19, 2016 3 / 7 SageMath Sage and libraries One of the original purpose of Sage was to put together the many existent open source mathematics software programs: Atlas, GAP, GMP, Linbox, Maxima, MPFR, PARI/GP, NetworkX, NTL, Numpy/Scipy, Singular, Symmetrica,... Sage is all-inclusive: it installs all those libraries and gives you a common python-based interface to work on them. On top of it is the python / cython Sage library it-self. Viviane Pons (U-PSud) SageMath and SageMathCloud October 19, 2016 4 / 7 SageMath Sage and libraries I You can use a library explicitly: sage: n = gap(20062006) sage: type(n) <c l a s s 'sage. interfaces .gap.GapElement'> sage: n.Factors() [ 2, 17, 59, 73, 137 ] I But also, many of Sage computation are done through those libraries without necessarily telling you: sage: G = PermutationGroup([[(1,2,3),(4,5)],[(3,4)]]) sage : G . g a p () Group( [ (3,4), (1,2,3)(4,5) ] ) Viviane Pons (U-PSud) SageMath and SageMathCloud October 19, 2016 5 / 7 SageMath Development model Development model I Sage is developed by researchers for researchers: the original philosophy is to develop what you need for your research and share it with the community.
    [Show full text]
  • Using Relational Databases in the Engineering Repository Systems
    USING RELATIONAL DATABASES IN THE ENGINEERING REPOSITORY SYSTEMS Erki Eessaar Department of Informatics, Tallinn University of Technology, Raja 15,12618 Tallinn, Estonia Keywords: Relational data model, Object-relational data model, Repository, Metamodeling. Abstract: Repository system can be built on top of the database management system (DBMS). DBMSs that use relational data model are usually not considered powerful enough for this purpose. In this paper, we analyze these claims and conclude that they are caused by the shortages of SQL standard and inadequate implementations of the relational model in the current DBMSs. Problems that are presented in the paper make usage of the DBMSs in the repository systems more difficult. This paper also explains that relational system that follows the rules of the Third Manifesto is suitable for creating repository system and presents possible design alternatives. 1 INTRODUCTION technologies in one data model is ROSE (Hardwick & Spooner, 1989) that is experimental data "A repository is a shared database of information management system for the interactive engineering about the engineered artifacts." (Bernstein, 1998) applications. Bernstein (2003) envisions that object- These artifacts can be software engineering artifacts relational systems are good platform for the model like models and patterns. Repository system contains management systems. ORIENT (Zhang et al., 2001) a repository manager and a repository (database) and SFB-501 Reuse Repository (Mahnke & Ritter, (Bernstein, 1998). Bernstein (1998) explains that 2002) are examples of the repository systems that repository manager provides services for modeling, use a commercial ORDBMS. ORDBMS in this case retrieving, and managing objects in the repository is a system which uses a database language that and therefore must offer functions of the Database conforms to SQL:1999 or later standard.
    [Show full text]
  • Rapid Application Development Software | Codegear RAD Studio
    RAD Studio 2010 Product Review Guide August 2009 Corporate Headquarters EMEA Headquarters Asia-Pacific Headquarters 100 California Street, 12th Floor York House L7. 313 La Trobe Street San Francisco, California 94111 18 York Road Melbourne VIC 3000 Maidenhead, Berkshire Australia SL6 1SF, United Kingdom RAD Studio 2010 Reviewer Guide TABLE OF CONTENTS Table of Contents ............................................................................................................................ - 1 - Introduction ...................................................................................................................................... - 3 - General Overview of RAD Studio 2010 ...................................................................................... - 3 - What is New in RAD Studio 2010 ............................................................................................... - 3 - A Word on Delphi Prism ............................................................................................................. - 6 - Prerequisites ................................................................................................................................ - 7 - Minimum System Requirements ................................................................................................. - 7 - Internationalizations .................................................................................................................... - 7 - Editions ........................................................................................................................................
    [Show full text]
  • RPC Broker 1.1 Deployment, Installation, Back-Out, and Rollback Ii May 2020 (DIBR) Guide
    RPC Broker 1.1 Deployment, Installation, Back-Out, and Rollback (DIBR) Guide May 2020 Department of Veterans Affairs (VA) Office of Information and Technology (OIT) Enterprise Program Management Office (EPMO) Revision History Documentation Revisions Date Revision Description Authors 05/05/2020 8.0 Tech Edits based on the Broker REDACTED Development Kit (BDK) release with RPC Broker Patch XWB*1.1*71: • Changed all references throughout to “Patch XWB*1.1*71” as the latest BDK release. • Updated the release date in Section 3. • Updated all project dates in Table 4. • Added a “Skip This Step” note in Section 4.3.2. • Updated “Disclaimer” note in Section 4.8. • Added “Skip Step ” disclaimer to Section 4.8.1. • Deleted Sections 4.8.1.3, 4.8.1.3.1, and 4.8.1.3.2, since there are no VistA M Server routines installed with RPC Broker Patch XWB*1.1*71. • Updated Section 4.8.2.1.4; deleted Figure 3, “Sample Patch XWB*1.1*71 Installation Dialogue (Test System),” since there are no VistA M Server routines installed with RPC Broker Patch XWB*1.1*71. • Updated Section 5.2; Added content indicating install is only on Programmer-Only workstations. • Updated Section 5.6.1; added a “Skip Step” disclaimer and deleted Figure 9, “Restoring VistA M Server Files from a Backup Message,” since there are no VistA M Server routines RPC Broker 1.1 Deployment, Installation, Back-Out, and Rollback ii May 2020 (DIBR) Guide Date Revision Description Authors installed with RPC Broker Patch XWB*1.1*71.
    [Show full text]
  • Chapter 1 Introduction to Computers, Programs, and Java
    Chapter 1 Introduction to Computers, Programs, and Java 1.1 Introduction • The central theme of this book is to learn how to solve problems by writing a program . • This book teaches you how to create programs by using the Java programming languages . • Java is the Internet program language • Why Java? The answer is that Java enables user to deploy applications on the Internet for servers , desktop computers , and small hand-held devices . 1.2 What is a Computer? • A computer is an electronic device that stores and processes data. • A computer includes both hardware and software. o Hardware is the physical aspect of the computer that can be seen. o Software is the invisible instructions that control the hardware and make it work. • Computer programming consists of writing instructions for computers to perform. • A computer consists of the following hardware components o CPU (Central Processing Unit) o Memory (Main memory) o Storage Devices (hard disk, floppy disk, CDs) o Input/Output devices (monitor, printer, keyboard, mouse) o Communication devices (Modem, NIC (Network Interface Card)). Bus Storage Communication Input Output Memory CPU Devices Devices Devices Devices e.g., Disk, CD, e.g., Modem, e.g., Keyboard, e.g., Monitor, and Tape and NIC Mouse Printer FIGURE 1.1 A computer consists of a CPU, memory, Hard disk, floppy disk, monitor, printer, and communication devices. CMPS161 Class Notes (Chap 01) Page 1 / 15 Kuo-pao Yang 1.2.1 Central Processing Unit (CPU) • The central processing unit (CPU) is the brain of a computer. • It retrieves instructions from memory and executes them.
    [Show full text]
  • Running Sagemath (With Or Without Installation)
    Running SageMath (with or without installation) http://www.sagemath.org/ Éric Gourgoulhon Running SageMath 9 Feb. 2017 1 / 5 Various ways to install/access SageMath 7.5.1 Install on your computer: 2 options: install a compiled binary version for Linux, MacOS X or Windows1 from http://www.sagemath.org/download.html compile from source (Linux, MacOS X): check the prerequisites (see here for Ubuntu) and run git clone git://github.com/sagemath/sage.git cd sage MAKE=’make -j8’ make Run on your computer without installation: Sage Debian Live http://sagedebianlive.metelu.net/ Bootable USB flash drive with SageMath (boosted with octave, scilab), Geogebra, LaTeX, gimp, vlc, LibreOffice,... Open a (free) account on SageMathCloud https://cloud.sagemath.com/ Run in SageMathCell Single cell mode: http://sagecell.sagemath.org/ 1requires VirtualBox; alternatively, a full Windows installer is in pre-release stage at https://github.com/embray/sage-windows/releases Éric Gourgoulhon Running SageMath 9 Feb. 2017 2 / 5 Example 1: installing on Ubuntu 16.04 1 Download the archive sage-7.5.1-Ubuntu_16.04-x86_64.tar.bz2 from one the mirrors listed at http://www.sagemath.org/download-linux.html 2 Run the following commands in a terminal: bunzip2 sage-7.5.1-Ubuntu_16.04-x86_64.tar.bz2 tar xvf sage-7.5.1-Ubuntu_16.04-x86_64.tar cd SageMath ./sage -n jupyter A Jupyter home page should then open in your browser. Click on New and select SageMath 7.5.1 to open a Jupyter notebook with a SageMath kernel. Éric Gourgoulhon Running SageMath 9 Feb. 2017 3 / 5 Example 2: using the SageMathCloud 1 Open a free account on https://cloud.sagemath.com/ 2 Create a new project 3 In the second top menu, click on New to create a new file 4 Select Jupyter Notebook for the file type 5 In the Jupyter menu, click on Kernel, then Change kernel and choose SageMath 7.5 Éric Gourgoulhon Running SageMath 9 Feb.
    [Show full text]
  • Python - the Most Attractive & Fastest-Growing Programming Language for Developers
    Vol-6 Issue-5 2020 IJARIIE-ISSN(O)-2395-4396 Python - The Most Attractive & Fastest-growing Programming Language for Developers Vishwa Prakash (SRKUMTSE1804) M-Tech, Department of Software Engineering, R.K.D.F. Institute of Science & Technology, Bhopal, M.P., India ABSTRACT Python is a very suitable and easy language for both learning and real-world programming. It is a powerful and high-level object-oriented programming language and created by Guido van Rossum. It is a very good choice for those who are learning programming for the first time because of its simple syntax. It has various standard libraries so it using by a developer in vast range and its capacity to integrate with other languages and use their features attract developers too. In this paper, we describe the main characteristics and features of Python programming. We also discuss the reasons behind python being credited as the most fastest-growing high-level object orient language. We collected the contents of the research done over the articles procured from various magazines and popular websites. This paper then discusses applications of Python programming. To end with we will see a few good examples where python programming is being used. Keyword : - Python, programming languages, object-oriented, open-source, interoperability, Real-world. etc… 1. INTRODUCTION In the late 1980s, Python was conceived, while its implementation began in late 1989 by Guido van Rossum in the Netherlands atCWI (Centrum Wiskunde & Informatica). It was implemented as a successor of ABC language and capable of interfacing and exception handling with the operating system Amoeba. Author Van Rossum is Python's principal and his continuing central role in deciding the road to the development of Python.
    [Show full text]
  • The First Programming Language and Freshman Year in Computer Science: Characterization and Tips for Better Decision Making
    The first programming language and freshman year in computer science: characterization and tips for better decision making Sónia Rolland Sobral [0000-0002-5041-3597] 1 REMIT, Universidade Portucalense, Porto, Portugal [email protected] Abstract. The ability to program is the “visible” competency to acquire in an introductory unit in com- puter science. However, before a student is able to write a program, he needs to understand the problem: before formalizing, the student must have to (be able) to think, (be able) to solve and (be able) to define. At an early stage of learning there are no significant differences between programming languages. The discussion of the early programming language continues: probably never will be a consensus among academics. The Association for Computing Machinery (ACM) and Institute of Electrical and Electronics Engineers (IEEE) computer science curriculum recommendations haven't clearly defined which programming language to adopt: it is the course directors and teachers who must make this choice, consciously and not only following the trends. This article presents a set of items that should be considered when you make a programming lan- guage choice for the first programming unit in higher education computer science courses. Keywords: Programming Languages, Undergraduate Studies; Introduction to Programming. 1 Introduction Programmability is the “visible” skill to be acquired in an introductory unit in computer science. Program- ming can be considered an art [1], a science [2], a discipline [3] or even the science of abstraction [4]. However, using a programming language is no more than a method for the programmer can communicate instructions to the computer.
    [Show full text]
  • Language Translators
    Student Notes Theory LANGUAGE TRANSLATORS A. HIGH AND LOW LEVEL LANGUAGES Programming languages Low – Level Languages High-Level Languages Example: Assembly Language Example: Pascal, Basic, Java Characteristics of LOW Level Languages: They are machine oriented : an assembly language program written for one machine will not work on any other type of machine unless they happen to use the same processor chip. Each assembly language statement generally translates into one machine code instruction, therefore the program becomes long and time-consuming to create. Example: 10100101 01110001 LDA &71 01101001 00000001 ADD #&01 10000101 01110001 STA &71 Characteristics of HIGH Level Languages: They are not machine oriented: in theory they are portable , meaning that a program written for one machine will run on any other machine for which the appropriate compiler or interpreter is available. They are problem oriented: most high level languages have structures and facilities appropriate to a particular use or type of problem. For example, FORTRAN was developed for use in solving mathematical problems. Some languages, such as PASCAL were developed as general-purpose languages. Statements in high-level languages usually resemble English sentences or mathematical expressions and these languages tend to be easier to learn and understand than assembly language. Each statement in a high level language will be translated into several machine code instructions. Example: number:= number + 1; 10100101 01110001 01101001 00000001 10000101 01110001 B. GENERATIONS OF PROGRAMMING LANGUAGES 4th generation 4GLs 3rd generation High Level Languages 2nd generation Low-level Languages 1st generation Machine Code Page 1 of 5 K Aquilina Student Notes Theory 1. MACHINE LANGUAGE – 1ST GENERATION In the early days of computer programming all programs had to be written in machine code.
    [Show full text]
  • Type Extensions, Wirth 1988
    Type Extensions N. WIRTH lnstitut fijr Informatik, ETH, Zurich Software systems represent a hierarchy of modules. Client modules contain sets of procedures that extend the capabilities of imported modules. This concept of extension is here applied to data types. Extended types are related to their ancestor in terms of a hierarchy. Variables of an extended type are compatible with variables of the ancestor type. This scheme is expressed by three language constructs only: the declaration of extended record types, the type test, and the type guard. The facility of extended types, which closely resembles the class concept, is defined in rigorous and concise terms, and an efficient implementation is presented. Categories and Subject Descriptors: D.3.3 [Programming Languages]: Language Constructs-data types and structures; modules, packuges; D.3.4 [Programming Languages]: Processors-code generation General Terms: Languages Additional Key Words and Phrases: Extensible data type, Modula-2 1. INTRODUCTION Modern software development tools are designed for the construction of exten- sible systems. Extensibility is the cornerstone for system development, for it allows us to build new systems on the basis of existing ones and to avoid starting each new endeavor from scratch. In fact, programming is extending a given system. The traditional facility that mirrors this concept is the module-also called package-which is a collection of data definitions and procedures that can be linked to other modules by an appropriate linker or loader. Modern large systems consist, without exception, of entire hierarchies of such modules. This notion has been adopted successfully by modern programming languages, such as Mesa [4], Modula-2 [8], and Ada [5], with the crucial property that consistency of interfaces be verified upon compilation of the source text instead of by the linking process.
    [Show full text]
  • Some Effective Methods for Teaching Mathematics Courses in Technological Universities
    International Journal of Education and Information Studies. ISSN 2277-3169 Volume 6, Number 1 (2016), pp. 11-18 © Research India Publications http://www.ripublication.com Some Effective Methods for Teaching Mathematics Courses in Technological Universities Dr. D. S. Sankar Professor, School of Applied Sciences and Mathematics, Universiti Teknologi Brunei, Jalan Tungku Link, BE1410, Brunei Darussalam E-mail: [email protected] Dr. Rama Rao Karri Principal Lecturer, Petroleum and Chemical Engineering Programme Area, Faculty of Engineering, Universiti Teknologi Brunei, Jalan Tungku Link, Gadong BE1410, Brunei Darussalam E-mail: [email protected] Abstract This article discusses some effective and useful methods for teaching various mathematics topics to the students of undergraduate and post-graduate degree programmes in technological universities. These teaching methods not only equip the students to acquire knowledge and skills for solving real world problems efficiently, but also these methods enhance the teacher’s ability to demonstrate the mathematical concepts effectively along with suitable physical examples. The exposure to mathematical softwares like MATLAB, SCILAB, MATHEMATICA, etc not only increases the students confidential level to solve variety of typical problems which they come across in their respective disciplines of study, but also it enables them to visualize the surfaces of the functions of several variable. Peer learning, seminar based learning and project based learning are other methods of learning environment to the students which makes the students to learn mathematics by themselves. These are higher level learning methods which enhances the students understanding on the mathematical concepts and it enables them to take up research projects. It is noted that the teaching and learning of mathematics with the support of mathematical softwares is believed to be more effective when compared to the effects of other methods of teaching and learning of mathematics.
    [Show full text]