Structure of Presentation. The Role of Programming in Informatics Curricula. Concepts of Informatics 2. Concepts of Informatics 1



Similar documents
Structure of Presentation. Stages in Teaching Formal Methods. Motivation (1) Motivation (2) The Scope of Formal Methods (1)

Datavetenskapligt Program (kandidat) Computer Science Programme (master)

ADVANCED SCHOOL OF SYSTEMS AND DATA STUDIES (ASSDAS) PROGRAM: CTech in Computer Science

How To Get A Computer Science Degree At Appalachian State

Page 1 of 5. (Modules, Subjects) SENG DSYS PSYS KMS ADB INS IAT

Bachelor of Bachelor of Computer Science

COURSE TITLE COURSE DESCRIPTION

School of Computer Science

Division of Mathematical Sciences

Chapter 1. Dr. Chris Irwin Davis Phone: (972) Office: ECSS CS-4337 Organization of Programming Languages

Software Engineering Transfer Degree

Eastern Washington University Department of Computer Science. Questionnaire for Prospective Masters in Computer Science Students

Course Descriptions - Computer Science and Software Engineering

Reasons for need for Computer Engineering program From Computer Engineering Program proposal

Computer Science/Software Engineering

POSTGRADUATE PROGRAMME SPECIFICATION

School of Computer Science

Draft dpt for MEng Electronics and Computer Science

Instructional Design Framework CSE: Unit 1 Lesson 1

Professional Organization Checklist for the Computer Science Curriculum Updates. Association of Computing Machinery Computing Curricula 2008

Doctor of Philosophy in Computer Science

Master of Science in Computer Science

What is a programming language?

Computer Science. Master of Science

The Role of Modelling in Teaching Formal Methods for Software Engineering

UNDERGRADUATE DEGREE PROGRAMME IN COMPUTER SCIENCE ENGINEERING SCHOOL OF COMPUTER SCIENCE ENGINEERING, ALBACETE

Bachelor Degree in Informatics Engineering Master courses

Fall 2012 Q530. Programming for Cognitive Science

MEng, BSc Computer Science with Artificial Intelligence

Study Program Handbook Computer Science

Poznan University of Technology Faculty of Electrical Engineering

model-driven development

Computer Science Curriculum Revision

Master Degree Program in Computer Science (CS)

DEGREE PLAN INSTRUCTIONS FOR COMPUTER ENGINEERING

Texas Essential Knowledge and Skills Correlation to Video Game Design Foundations 2011 N Video Game Design

LONG BEACH CITY COLLEGE MEMORANDUM

MEng, BSc Applied Computer Science

Diploma Of Computing

Language Evaluation Criteria. Evaluation Criteria: Readability. Evaluation Criteria: Writability. ICOM 4036 Programming Languages

Degrees Major in Computer Science Minor in Computer Science Major in Software Engineering

SERVICE-ORIENTED MODELING FRAMEWORK (SOMF ) SERVICE-ORIENTED SOFTWARE ARCHITECTURE MODEL LANGUAGE SPECIFICATIONS

Sequence Diagrams. Massimo Felici. Massimo Felici Sequence Diagrams c

Guide to the MSCS Program Sheet

Basic Trends of Modern Software Development

PROGRAMME SPECIFICATION POSTGRADUATE PROGRAMME

Challenges and Opportunities for formal specifications in Service Oriented Architectures

A Multi-layered Domain-specific Language for Stencil Computations

CS Standards Crosswalk: CSTA K-12 Computer Science Standards and Oracle Java Programming (2014)

Lecture 1: Introduction

Undergraduate Major in Computer Science and Engineering

Computer Science Information Sheet for entry in What is Computer Science?

The value of modeling

Software Development Training Camp 1 (0-3) Prerequisite : Program development skill enhancement camp, at least 48 person-hours.

Object-Oriented Software Specification in Programming Language Design and Implementation

CSE4213 Lecture Notes

Value equivalent. ECTS equivalent. Value N/A

Project VIDE Challenges of Executable Modelling of Business Applications

Master of Science in Software Engineering (MSC)

How To Get A Computer Science Degree At Coastal Carolina University

Master of Science in Information Systems management

College of Science, Engineering and Technology. School of Computing. college of science, engineering and technology. Learn without limits.

Budapest University of Technology and Economics Department of Measurement and Information Systems. Business Process Modeling

Schoo\ of Computing. Middlesbrough. Teesside University. 22 June To whom it may concern

Information and Communications Technology Courses at a Glance

Department of Computer Science

Professional Organization Checklist for the Computer Information Systems Curriculum

Model-Driven Development: A Metamodeling Foundation

UNDERGRADUATE COMPUTER SCIENCE EDUCATION: A NEW CURRICULUM PHILOSOPHY & OVERVIEW

Computer Science Department. Course Descriptions

Chapter 6: Programming Languages

LEHMAN COLLEGE OF THE CITY UNIVERSITY OF NEW YORK DEPARTMENT OF MATHEMATICS AND COMPUTER SCIENCE CURRICULUM CHANGE

Core Curriculum to the Course:

UF EDGE brings the classroom to you with online, worldwide course delivery!

Engineering Process Software Qualities Software Architectural Design

Chap 1. Introduction to Software Architecture

Data Modeling Basics

CMSC 435: Software Engineering Course overview. Topics covered today

A New MSc Curriculum in Computer Science and Mathematics at the University of Zagreb

HPC Wales Skills Academy Course Catalogue 2015

Computer Science. Requirements for the Major (updated 11/13/03)

M.S. Computer Science Program

Design with Reuse. Building software from reusable components. Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 14 Slide 1

Masters in Information Technology

School of Computing and Technology

SERVICE-ORIENTED MODELING FRAMEWORK (SOMF ) SERVICE-ORIENTED BUSINESS INTEGRATION MODEL LANGUAGE SPECIFICATIONS

Chapter 13: Program Development and Programming Languages

REGULATIONS FOR THE DEGREE OF BACHELOR OF SCIENCE IN BIOINFORMATICS (BSc[BioInf])

Bachelor of Information Technology

value equivalent value N/A

FACULTY OF COMPUTER SCIENCE AND INFORMATION TECHNOLOGY AUTUMN 2016 BACHELOR COURSES

M.Tech. Software Systems

LIST OF REGISTRABLE COURSES FOR BSC COMMUNICATION TECHNOLOGY JUNE 2014

School of Computer Science

Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science. Unit of Study / Textbook Correlation

Computer Science Introduction

Building Reliable, Scalable AR System Solutions. High-Availability. White Paper

Programming Languages

Structure of Postgraduate Programs (2005)

Transcription:

The Role of Programming in Informatics Curricula A. J. Cowling Department of Computer Science University of Sheffield Structure of Presentation Introduction The problem, and the key concepts. Dimensions to Programming Programming technology and artefacts; Programming activities: layers of abstraction and description; Dependencies and programming. Teaching Programming Knowledge and skills; Groups of topics; Disciplines within informatics. Summary and Conclusions Concepts of Informatics 1 The Core of Informatics Traditionally, this was the role of programming; Arguably, the core is actually software development; So, what is the role of programming? apart from being one part of software development. Fundamental Concepts Information, and how it is structured; Computation, or how information is processed. Implementing These Concepts Information is processed by systems: which carry out the computations; Systems must be constructed: which involves hardware and software technologies. Concepts of Informatics 2 Studying Technologies A range of aspects, from practical to theoretical: applications of the technologies, the technologies themselves, and the theories that underpin the technologies. Programming is a Key Software Technology So all three aspects of it must be covered. Applications of Programming Technology These can be equated to programming paradigms: imperative, functional, object-oriented, etc; Developing a system involves choosing a paradigm: this forms part of the topic of software architecture. Programming Technology 1 The Structures Mirror Those of Informatics Programming has a products dimension: concerned with programs as artefacts; Programming has a processes dimension: concerned with the activities of programming; Programming has a people dimension: which is related to both products and processes; People have requirements for software systems: what they must do, and how well they should do it; People perform the activities of programming: studied as the psychology of programming. Programming Technology 2 Linking Computation and Information Programming is not just about computation: even if most code describes control structures; Programming is also about information: data structures are equally important, they define the information to be processed. Algebraic Theories of Abstract Data Types Data structures are defined by the elementary operations; These are also the primitives used in the control structures. Maintaining the Link is Essential To link control structures with data structures; and To link computation with information. 1

Programs as Artefacts 1 Layers of Abstraction of Artefacts Layer Units Open applications Systems of systems Closed applications Systems Programs as Artefacts 2 Elementary Programs A key layer for introductory courses; Covers basic structuring mechanisms (control and data); Focuses on the ability to develop program fragments: which may typically be simple programs; Emphasises the forms of these fragments, rather than their utility. Components Program modules Elementary programs System libraries Assembly language Microcode APIs Classes, objects Program fragments System functions Routines Instructions Program Modules Focuses on packaging fragments to provide useful but limited functions; Covers different structuring mechanisms; Is also a key layer for introductory courses; The issue of which of these layers should come first will be ignored. Programs as Artefacts 3 Components Abstractions that provide useful functionality; This is described in terms of APIs. Closed Applications Systems that just have limited interfaces for other systems; Only designed to interact with a few other systems. Open Applications Systems where the interfaces for others are key features; Provide defined interfaces that are open to any other systems; Allow systems of systems to be constructed. Programs as Artefacts 4 System Libraries The key layer below program fragments; Focus on making hardware facilities easier to use. Assembly Language Reflects the underlying hardware structure; Usually viewed in terms of program fragments: correspond to standard control and data structures, focus on making efficient use of the hardware. Microcode Highly specialised form of programming; Implements hardware instructions in terms of register transfers. The Activities of Programming 1 Layers of Specialisation of Concepts Orthogonal to the artefact structures; Progress from general theories to specific structures. Layer Programs Languages Paradigms Models Foundation Computational Concepts Features of the selected language Defined by the selected paradigm Selected model features Functions, recursions, state transitions, etc Storage and transformation of information The Activities of Programming 2 Foundation Layer Information systems as a branch of general systems theory; Systems that process information by carrying out computation: where at least some of this processing is automated; Hence, systems that capture, store and transform information. Fundamental Models Mathematical models of information system structures: algebras to model components of information, functions and relations to model data structuring, functions to model primitive computations; Different approaches to constructing models, eg: single or multiple assignments to variables, recursive functions or iterative state machines. 2

The Activities of Programming 3 Programming Paradigms Standard combinations of modelling choices: which have evolved to achieve internal consistency; The features of each paradigm affect the activities: how to think about creating programs, how to trace the behaviour of programs. Languages Concrete expressions of the choices in a paradigm; Determine how programmers can express computations: what constructions are available, what syntax must be used for them; Determine how computations behave: as constrained by the language semantics. The Activities of Programming 4 Programs Specific artefacts created in a particular language; They could be at any of the levels of abstraction of the artefacts: from microcode to open applications; They will depend on all of the lower levels of artefact: but the aim is to hide these dependencies as far as possible. Layers and Descriptions Here, the lower layers define what computations are; The upper layers are concerned with how computations are described: by defining and using syntax and semantics, which applies to all of the layers of artefacts, but is done differently for programs and for systems. Describing Structures 1 Layers of Description of Structures Similar to layers of specialisation of concepts; But, with the most specific as the base layer. Layer Meta-grammar Grammar Artifact Execution Programs Meta-language Programming language Program Values of variables Systems Meta-metamodel Modeling language System model States of objects Describing Structures 2 Describing the Execution of Artefacts Here, artefacts are specific programs or systems of objects; Describing execution involves specifying changes: for programs, to the values of variables, for systems, to the states of objects, or to associations between objects. Artefacts Describe Execution Paths Programs describe how they will be executed; System models (eg in UML) describe: system structures (in terms of diagrams), and how they should behave (eg OCL annotations). Describing Structures 3 Grammars and Languages The syntax of a programming language is defined by its grammar; The meanings of constructions should also be defined: by denotational semantics, by operational semantics, or using less formal structures; System modelling languages also have grammars: largely graphical, define the symbols that may be used, and how they may be arranged; These assume a core of standard constructions: eg classes, objects, attributes, associations, inheritance, aggregation, etc. Describing Structures 4 Defining Grammars Requires appropriate meta-languages; These need to be able to describe themselves; For programming languages, we use forms of extended BNF; For system modelling languages, the equivalent is the MetaObject Facility (MOF). Aligning Specialisation and Description Meta-grammars and paradigms relate to classes of languages; Grammars describe languages; Artefacts are instances of the programs or systems; Execution describes how programs or systems behave. 3

Dependencies and Programming 1 The Role of Dependencies An 8 x 5 topic space has been defined; Dependencies can help to cluster these topics. Information and Computation All of informatics depends on these concepts; This applies particularly within the layers of specialisation: models, paradigms, languages & programs; Topics outside this space also depend on these concepts. Dependencies and Programming 2 Applications of Information Systems Properties of different classes of information systems affect: how these systems are used in business, and the natures and structures of the business organisations, eg centralised data warehouses versus distributed databases; These properties identify application domains; These properties may involve large-scale models for information structures: eg relational databases versus semi-structured ones; They are effectively independent of programming technology. Dependencies and Programming 3 Applications of Programming Technology Includes many knowledge areas within informatics: including computer networking, parallel and distributed systems, database systems, operating systems, computer graphics, computer vision, natural language processing, robotics, other sub-fields of artificial intelligence, etc; These will require study of example programs or fragments: which may cover all of the layers of specialisation, and several adjacent layers of artefacts, but which layers will depend on the topic. Dependencies and Programming 4 Programming and Software Development Programming is an important activity in software development: often called the construction phase; In principle, other activities could therefore depend on it; In practice, only the ones immediately before and after it do; Software design involves choices that depend on it, for: the structures of program modules, components and applications, and which programming languages will be the most suitable; Installing developed systems may also depend on how their code is structured and organised. Dependencies and Programming 5 Computational Thinking Focuses on applying computational concepts to other areas: not necessarily within informatics, but informatics applications are important; Combines mathematical and engineering ways of viewing problems; Is based on fundamental principles: of systems engineering, and of applying mathematical models; Emphasises spanning multiple layers of abstractions; Is applicable to all the layers of artefact abstractions: as in the recurring concepts of Curriculum 91; Depends on the foundation and models layers of specialisation: not on paradigms or languages. Knowledge and Skills 1 The Significance of Dependencies Topics in the 8 x 5 space define both knowledge and skills; If one topic depends on another, then Either of these for it may depend on either of them for the other. Knowledge Depending on Knowledge Applies to dependencies on the foundation or knowledge layers: undergraduates use models of computation, they are not expected to create new ones. Skills Depending on Knowledge Creating programs in a language depends on knowledge of its paradigm; And transitively on knowledge of the underlying models. 4

Knowledge and Skills 2 Skills Depending on Skills Creating program modules depends on the skill of creating program fragments; And transitively on the skill of using library components. Knowledge Depending on Skills Commonly seems to arise as part of building up experience: eg, knowledge about managing versions of software requires some experience of actually creating it; But the actual dependency is on the underlying knowledge: eg of the properties of software components, and how these change during development; Hence, virtually no dependencies come in this class. Knowledge and Skills 3 Grouping the Topics Apply these classes to the previous kinds of dependencies; Will start to indicate clusters of topics. Dependence on Information and Computation Applies to programming paradigms, languages and programs; They depend on the concepts of information, computation and models; Includes skills depending on knowledge: eg creating and tracing programs will depend on concepts and models of information and computation; And knowledge depending on knowledge: eg knowledge of programming paradigms will also depend on these. Knowledge and Skills 4 Applications of Programming Technology And also dependencies for applications of systems; Are on the details of the technology; Include skills depending on knowledge: eg as in studying sample programs or fragments; And include knowledge depending on knowledge: eg knowledge of the properties of the different kinds of systems; And include skills depending on skills: eg when analysing application systems; And might appear to include knowledge depending on skills: but, studying sample programs is part of the learning process, not a learning outcome, so these are not real dependencies of the topics. Knowledge and Skills 5 Software Development and Programming Software development focuses on achieving skills; These may depend on programming concepts; eg on knowledge of particular language structures; Or on programming skills: eg in software design; And knowledge of software development concepts may depend on programming concepts. Computational Thinking Is a skill that depends on the knowledge of these concepts. Partitioning the Topics 1 Partition the Dimension of Specialisation A partition for the foundation and models layers: is concerned just with knowledge, topics outside this space also depend on it; A partition for programming paradigms: again, concerned just with knowledge; A partition for languages and programs: concerned primarily with skills, depends on the other two partitions. Partitioning the Topics 2 Partition the Dimension of Artefact Abstractions Does not affect the fundamental concepts; Partly applies to the paradigms; Applies completely to the languages and programs. Combining Layers of Artefact Abstractions Hardware structures each apply to one layer: register and bus structures to the microcode layer, addressable registers to the assembly language layer; Language and program structures may apply to several layers: system libraries to component implementations; And similarly architectural structures: component structures to applications. 5

Partitioning the Topics 3 The Structure of Partitions A r t e f a c t s Fundamentals Paradigms Languages & programs Architecture Programming Assembly Language Microprogramming Disciplines Within Informatics 1 The Partition for Fundamentals Contains material that is core to Computer Science; This is spread across several knowledge areas in CS2001: Discrete Structures, Programming Languages, Programming Fundamentals; But, there is not much emphasis on the mathematical models; These topics should not really be classed as programming: they underpin it, but they also underpin everything else as well. Specialization Disciplines Within Informatics 2 The Partition for Microprogramming A highly specialised form of programming; Core material for Computer Engineering; Part of an equally specialised form of software development; Hence the main focus is on skills, rather than knowledge. The Partition for Assembly Language Also core material for Computer Engineering; Again, the focus there is on skills; It also underpins some Computer Science: eg operating systems, compilers, etc; Here, the focus may be more on knowledge: of why particular structures are needed. Disciplines Within Informatics 3 The Partition for Architecture Concerned with high-level system structures; Core material for Software Engineering and Information Systems; Highly relevant to Information Technology; Concerned with a form of programming: at one time called programming in the large, now called software architecture ; Concerned with quality as well as functions; Closely linked with other activities within software development. The Partition for Programming Important in all of the disciplines: knowledge of it underpins other areas of informatics; For all disciplines, the focus is on skills: the applications of these vary across the disciplines; These skills are part of the wider set of software development skills. Summary Foundational Topics The nature of information and computation; Mathematical models of them; Underpin the whole of informatics; Underpin computational thinking; Not just part of programming. Aspects of Programming Apply at different levels of artefact abstractions; Different levels are core to different disciplines; Each level has paradigms, languages and programs/systems. Conclusions Role of Programming At all the levels of artefacts: knowledge of the concepts is important, but the focus is on developing skills; These are part of the wider set of software development skills. Dependencies in Curriculum Models Dependencies between topics are well understood: and are mainly on knowledge of concepts; Dependencies within the educational process: may include dependencies on skills, still need further analysis. 6

The End Thanks for your attention!! Any Questions? 7