Gradual Security Typing with References

Total Page:16

File Type:pdf, Size:1020Kb

Gradual Security Typing with References 2013 IEEE 26th Computer Security Foundations Symposium Gradual Security Typing with References Luminous Fennell, Peter Thiemann Dept. of Computing Science University of Freiburg Freiburg, Germany Email: {fennell, thiemann}@informatik.uni-freiburg.de Abstract—Type systems for information-flow control (IFC) The typing community studies a similar interplay between are often inflexible and too conservative. On the other hand, static and dynamic checking. Gradual typing [25], [26] is dynamic run-time monitoring of information flow is flexible and an approach where explicit cast operations mediate between permissive but it is difficult to guarantee robust behavior of a program. Gradual typing for IFC enables the programmer to coexisting statically and dynamically typed program frag- choose between permissive dynamic checking and a predictable, ments. The type of a cast operation reflects the outcome of conservative static type system, where needed. the run-time test performed by the cast: The return type of We propose ML-GS, a monomorphic ML core language with the cast is the compile-time manifestation of the positive test; references and higher-order functions that implements gradual a negative outcome of the test causes a run-time exception. typing for IFC. This language contains security casts, which enable the programmer to transition back and forth between Disney and Flanagan propose an integration of security static and dynamic checking. types with dynamic monitoring via gradual typing [11]. Such In particular, ML-GS enables non-trivial casts on reference an integration enables the stepwise introduction of checked types so that a reference can be safely used everywhere in a security policies into a software system. The programmer program regardless of whether it was created in a dynamically inserts checks for these policies as run-time casts at strategic or statically checked part of the program. The reference can be shared between dynamically and statically checked parts. points in the code. The type system statically guarantees We prove the soundness of the gradual security type system adherence to the policies “on the static side” of a cast, along with termination insensitive non-interference. whereas the run-time system checks the policies “on the Keywords-gradual typing; security typing; ML; references dynamic side”. This procedure creates statically checked regions in a I. INTRODUCTION dynamically checked environment. These regions can be en- Language-based analysis and control of information flow larged by rewriting code and moving casts to make programs in software systems has been studied by numerous authors more efficient and to avoid potential run-time errors. [13], [23]. Many studies propose type-based, static program Alternatively, a programmer may impose a static secu- analyses where the non-interference property is guaranteed rity typing discipline on a program and revert to dynamic for well-typed programs. Other studies concentrate on dy- checking by inserting casts demarcating the regions where namic monitoring of program execution where potentially the static checker fails. This approach leads to dynamically interfering behavior of a program is detected and prevented checked regions and the programmer should strive to restrict at run time. Hybrid approaches (e.g., [12], [22]) combine them to places where the static analysis would be too both kinds of analysis. conservative or where the code contains language features Static approaches are advantageous for the specification not supported by the analysis. The programmer may also of security policies that are known up-front and where restrict debugging efforts that chase policy violations to the the program can be built to suit the analysis. The analy- dynamically checked parts. sis guarantees that no security mismatches happen at run time. However, security policies are often formulated as A. Contributions an afterthought, when a large part of a system is already Disney and Flanagan [11] consider a pure lambda cal- implemented, or they may evolve as the implications of a culus. Building on their ideas, we study a monomorphic system design become understood. Unfortunately, a program ML core language with references. The consideration of ref- that was not built with the static analysis in mind can be erences introduces significant complications, as references difficult to modify so that it accepted by the analysis even enable flow-sensitivity attacks [22]. The underlying type though the program respects the desired security policies. system is inspired by Pottier and Simonet’s work on a Dynamic approaches, on the other hand, enforce a safe security type system for CoreML [21]. We extend this static approximation to the non-interference property. They do not system with casts and suitable run-time representations of give static guarantees, but are amenable to changes in the security levels on the dynamic side of a cast. Our casts are security policy without requiring a rewrite of the code. very powerful because they are able to change the security © 2013, Luminous Fennell. Under license to IEEE. 224 DOI 10.1109/CSF.2013.22 type of the content of a reference. This choice enables 1 (* Some privileged information *) H our calculus to safely perform casts between security types 2 let infoH : ref Report = ... that are not related by the subtype relation induced by the 3 ordering on security levels: A sound subtype relation must 4 (* Optionally enhance a report 5 with privileged information ) treat references invariantly. The extended calculus uses a no- * * 6 addPrivileged isPrivileged worker report = sensitive-upgrade strategy (NSU, [3]) for information flow 7 if isPrivileged control (IFC) on the dynamic side and we prove termination 8 then report := report + !infoH; insensitive non-interference for the combined system. 9 worker report Listing 1. Example function with manual security enforcement. B. Terminology Security levels are drawn from a two-element lattice with elements L for low-security, public information and H for requiring any run-time checks. Here are two examples of high-security, secret information. They are ordered by L @ H such procedures with their type signatures:1 and the operator t denotes the least upper bound. Our results H H generalize to arbitrary discrete security lattices as outlined sendToManager : ref Report → unit L for CoreML [21]. In the remainder of the paper, we will sendToFacebook : ref ReportL → unit use a capital “B” as a meta-variable for the security levels The sendToManager function takes a confidential report of values and a capital “PC ” for the security context.A and guarantees that it is not leaked to the public. The H on security context is the security level of the program counter the arrow indicates the lowest security level that is modified. at run-time. The sendToFacebook function takes a public report and We write intL for the type of low-security integers and L H publishes it to an open Internet message board, as indicated ref int for the type of low-security pointers that point L by the low-security effect →. H L to high-security integers in memory. The type (int → Listing 1 illustrates a proposed extension of the re- H L int ) specifies a low-security function that takes a high- port processing application. It contains a utility function security argument and yields a high-security result. The addPrivileged that adds privileged information to a report annotation on the arrow restricts the effect of the function, before passing it to a procedure like sendToManager or i.e., the function allocating or modifying a memory cell, to sendToFacebook. The flag isPrivileged indicates if the cells of at least the level indicated by the annotation. The worker argument is sufficiently trusted to handle a privi- annotation L means that all cells may be modified, whereas leged report. If isPrivileged is true, then the privileged H would restrict modification to high-security memory cells. information is retrieved through a global reference infoH Upgrading a memory cell means to overwrite its low- and added to report. Otherwise, worker is called with an security content with a high-security value. Because up- unmodified report. grades that occur in high-security contexts may leak con- Listing 1 type checks in FlowCaml and also the term fidential information through implicit flows, they have to be treated specially by dynamic IFC techniques [5]. Security addPrivileged true sendToManager type systems typically forbid upgrades altogether. is accepted with type ref ReportH→H unit, as We will employ the non-sensitive-upgrade (NSU) strategy sendToManager is safe for consuming high-security of Austin and Flanagan [3] as a dynamic IFC technique. In information. In contrast, the term an NSU semantics, assignments fail if they would upgrade a memory cell under a high-security context. addPrivileged false sendToFacebook is rejected by the type checker, even though it is semantically II. MOTIVATION safe. No privileged information is leaked, but the type The following examples illustrate the creation of dy- checker does not track the correspondence between the namically checked regions in otherwise statically checked security level of the worker and the isPrivileged flag. programs and vice versa. The motivation for the examples Our proposal for gradual security typing allows us to is to work around restrictions imposed by the underlying embed a (security-) untyped code fragment in a typed security type system, for example the dynamic, manual setting. A cast expression
Recommended publications
  • Divine Liturgy
    THE DIVINE LITURGY OF OUR FATHER AMONG THE SAINTS JOHN CHRYSOSTOM H QEIA LEITOURGIA TOU EN AGIOIS PATROS HMWN IWANNOU TOU CRUSOSTOMOU St Andrew’s Orthodox Press SYDNEY 2005 First published 1996 by Greek Orthodox Archdiocese of Australia 242 Cleveland Street Redfern NSW 2016 Australia Reprinted with revisions and additions 1999 Reprinted with further revisions and additions 2005 Reprinted 2011 Copyright © 1996 Greek Orthodox Archdiocese of Australia This work is subject to copyright. Apart from any use permitted under the Copyright Act 1968, no part may in any form or by any means (electronic, mechanical, photocopying, recording or otherwise) be reproduced, stored in a retrieval system or transmitted without prior written permission from the publisher. Enquiries should be addressed to the publisher. National Library of Australia Cataloguing-in-Publication Data The divine liturgy of our father among the saints John Chrysostom = I theia leitourgia tou en agiois patros imon Ioannou tou Chrysostomou. ISBN 0 646 44791 2. 1. Orthodox Eastern Church. Liturgy of St. John Chrysostom. 2. Orthodox Eastern Church. Prayer-books and devotions. 3. Prayers. I. Greek Orthodox Archdiocese of Australia. 242.8019 Typeset in 11/12 point Garamond and 10/11 point SymbolGreek II (Linguist’s Software) CONTENTS Preface vii The Divine Liturgy 1 ïH Qeiva Leitourgiva Conclusion of Orthros 115 Tevlo" tou' ÒOrqrou Dismissal Hymns of the Resurrection 121 ÆApolutivkia ÆAnastavsima Dismissal Hymns of the Major Feasts 127 ÆApolutivkia tou' Dwdekaovrtou Other Hymns 137 Diavforoi ÓUmnoi Preparation for Holy Communion 141 Eujcai; pro; th'" Qeiva" Koinwniva" Thanksgiving after Holy Communion 151 Eujcaristiva meta; th;n Qeivan Koinwnivan Blessing of Loaves 165 ÆAkolouqiva th'" ÆArtoklasiva" Memorial Service 177 ÆAkolouqiva ejpi; Mnhmosuvnw/ v PREFACE The Divine Liturgy in English translation is published with the blessing of His Eminence Archbishop Stylianos of Australia.
    [Show full text]
  • The Constitution on the Sacred Liturgy
    THE CONSTITUTION ON THE SACRED LITURGY Sacrosanctum Concilium, 4 December, 1963 INTRODUCTION 1. The sacred Council has set out to impart an ever-increasing vigor to the Christian life of the faithful; to adapt more closely to the needs of our age those institutions which are subject to change; to foster whatever can promote union among all who believe in Christ; to strengthen whatever can help to call all mankind into the Church's fold. Accordingly it sees particularly cogent reasons for undertaking the reform and promotion of the liturgy. 2. For it is the liturgy through which, especially in the divine sacrifice of the Eucharist, "the work of our redemption is accomplished,1 and it is through the liturgy, especially, that the faithful are enabled to express in their lives and manifest to others the mystery of Christ and the real nature of the true Church. The Church is essentially both human and divine, visible but endowed with invisible realities, zealous in action and dedicated to contemplation, present in the world, but as a pilgrim, so constituted that in her the human is directed toward and subordinated to the divine, the visible to the invisible, action to contemplation, and this present world to that city yet to come, the object of our quest.2 The liturgy daily builds up those who are in the Church, making of them a holy temple of the Lord, a dwelling-place for God in the Spirit,3 to the mature measure of the fullness of Christ.4 At the same time it marvelously increases their power to preach Christ and thus show forth the Church, a sign lifted up among the nations,5 to those who are outside, a sign under which the scattered children of God may be gathered together 6 until there is one fold and one shepherd.7 _______________________________________________________ 1.
    [Show full text]
  • Functional Pls Introduction to Haskell
    Thoughts on Assignment 4 PL Category: Functional PLs Introduction to Haskell CS F331 Programming Languages CSCE A331 Programming Language Concepts Lecture Slides Friday, February 22, 2019 Glenn G. Chappell Department of Computer Science University of Alaska Fairbanks [email protected] © 2017–2019 Glenn G. Chappell Thoughts on Assignment 4 Introduction In Assignment 4 you will be writing a Recursive-Descent parser, in the form of Lua module parseit. It will be similar to module rdparser4 (written in class), but it will involve a different grammar & AST specification. In Assignment 6 you will write an interpreter that takes, as input, an AST of the form your parser returns. The result will be an implementation of a programming language called Jerboa. Module parseit is to parse a complete programming language, while module rdparser4 only parses expressions. Nonetheless, Jerboa has expressions, and they work in much the same way as those handled by rdparser4. I suggest using file rdparser4.lua as a starting point for Assignment 4. 22 Feb 2019 CS F331 / CSCE A331 Spring 2019 2 Thoughts on Assignment 4 The Goal Here is a sample Jerboa program, again. # Function fibo # Main Program # Given k, return F(k), where # F(n) = nth Fibonacci no. # Get number of Fibos to output def fibo() write("How many Fibos to print? ") a = 0 # Consecutive Fibos n = readnum() b = 1 write(cr) i = 0 # Loop counter while i < k # Print requested number of Fibos c = a+b # Advance j = 0 # Loop counter a = b while j < n b = c k = j i = i+1 # ++counter write("F(",j,")
    [Show full text]
  • A Comparison of the Two Forms of the Roman Rite
    A Comparison of the Two Forms of the Roman Rite Mass Structures Orientation Language The purpose of this presentation is to prepare you for what will very likely be your first Traditional Latin Mass (TLM). This is officially named “The Extraordinary Form of the Roman Rite.” We will try to do that by comparing it to what you already know - the Novus Ordo Missae (NOM). This is officially named “The Ordinary Form of the Roman Rite.” In “Mass Structures” we will look at differences in form. While the TLM really has only one structure, the NOM has many options. As we shall see, it has so many in fact, that it is virtually impossible for the person in the pew to determine whether the priest actually performs one of the many variations according to the rubrics (rules) for celebrating the NOM. Then, we will briefly examine the two most obvious differences in the performance of the Mass - the orientation of the priest (and people) and the language used. The orientation of the priest in the TLM is towards the altar. In this position, he is facing the same direction as the people, liturgical “east” and, in a traditional church, they are both looking at the tabernacle and/or crucifix in the center of the altar. The language of the TLM is, of course, Latin. It has been Latin since before the year 400. The NOM was written in Latin but is usually performed in the language of the immediate location - the vernacular. [email protected] 1 Mass Structure: Novus Ordo Missae Eucharistic Prayer Baptism I: A,B,C,D Renewal Eucharistic Prayer II: A,B,C,D Liturgy of Greeting: Penitential Concluding Dismissal: the Word: A,B,C Rite: A,B,C Eucharistic Prayer Rite: A,B,C A,B,C Year 1,2,3 III: A,B,C,D Eucharistic Prayer IV: A,B,C,D 3 x 4 x 3 x 16 x 3 x 3 = 5184 variations (not counting omissions) Or ~ 100 Years of Sundays This is the Mass that most of you attend.
    [Show full text]
  • The Chalice Francis’ AUGUST 2 0 1 9 Page 4: from the Bishop’S Warden
    ST. FRANCIS’ EPISCOP A L C H U R C H IN THIS ISSUE E U R E K A , M O Page 1: Morning Coffee on the River Page 2: Search Committee Page 3: Friends of St. The Chalice Francis’ AUGUST 2 0 1 9 Page 4: From the Bishop’s Warden Page 5: Diocesan Elections; Feed the Morning Coffee on the River Need-STL Recently, I received word ing on open fires with the the boiling water into unwashed Page 6: Agape House; Potluck with Friends that an old friend from the smoke constantly shifting. All cups containing several Folgers Diocese of West Missouri was endured as we went Coffee Singles we would sit side Page 7: Food Pantry; Recipe died. We eventually lost track about our daily business of by side facing the river, watching of each other after Dayna and canoeing and having fun, the morning mist burn off with Page 8: Stump the Vicar; Interment of I moved to St. Louis. Permit mending cut fingers and toes the rising sun. Ashes me to share a story about the and caring for insect bites In the beginning of the week beginning of our friendship. we talked about the river and Page 9: Book Group; while we planted new seeds Eureka Days; Lunar July is a hot and sticky in the kingdom and watered camping and fishing. Then we Communion Sunday; month in the heartland of our those planted by others. began to talk about the campers Centering Prayer country. The sun beats down and Cliff Springs.
    [Show full text]
  • A Nominal Theory of Objects with Dependent Types
    A Nominal Theory of Objects with Dependent Types Martin Odersky, Vincent Cremet, Christine R¨ockl, Matthias Zenger Ecole´ Polytechnique F´ed´eralede Lausanne INR Ecublens 1015 Lausanne, Switzerland Technical Report IC/2002/070 Abstract Simula 67 [DMN70], whereas virtual or abstract types are present in BETA [MMPN93], as well as more recently in We design and study νObj, a calculus and dependent type gbeta [Ern99], Rune [Tor02] and Scala [Ode02]. An es- system for objects and classes which can have types as mem- sential ingredient of these systems are objects with type bers. Type members can be aliases, abstract types, or new members. There is currently much work that explores types. The type system can model the essential concepts the uses of this concept in object-oriented programming of Java’s inner classes as well as virtual types and family [SB98, TT99, Ern01, Ost02]. But its type theoretic foun- polymorphism found in BETA or gbeta. It can also model dations are just beginning to be investigated. most concepts of SML-style module systems, including shar- As is the case for modules, dependent types are a promis- ing constraints and higher-order functors, but excluding ap- ing candidate for a foundation of objects with type mem- plicative functors. The type system can thus be used as a bers. Dependent products can be used to represent functors basis for unifying concepts that so far existed in parallel in in SML module systems as well as classes in object sys- advanced object systems and in module systems. The paper tems with virtual types [IP02].
    [Show full text]
  • Comparison of Programming Languages
    ECE326 PROGRAMMING LANGUAGES Lecture 1 : Course Introduction Kuei (Jack) Sun ECE University of Toronto Fall 2019 Course Instructor Kuei (Jack) Sun Contact Information Use Piazza Send me (Kuei Sun) a private post Not “Instructors”, otherwise the TAs will also see it http://piazza.com/utoronto.ca/fall2019/ece326 Sign up to the course to get access Office: PRA371 (office hours upon request only) Research Interests Systems programming, software optimization, etc. 2 Course Information Course Website http://fs.csl.toronto.edu/~sunk/ece326.html Lecture notes, tutorial slides, assignment handouts Quercus Grade posting, course evaluation, lab group sign-up! Piazza Course announcement, course discussion Assignment discussion Lab TAs will read and answer relevant posts periodically 3 Course Information No required textbook Exam questions will come from lectures, tutorials, and assignments See course website for suggested textbooks Lab sessions Get face-to-face help from a TA with your assignments Tutorials Cover supplementary materials not in lectures Go through sample problems that may appear on exams 4 Volunteer Notetakers Help your peers Improve your own notetaking skills Receive Certificate of Recognition Information: https://www.studentlife.utoronto.ca/as/note-taking Registration: https://clockwork.studentlife.utoronto.ca/custom/misc/home.aspx Notetakers needed for lectures and tutorials 5 Background Programming Languages A formal language consisting of a instructions to implement algorithms and perform
    [Show full text]
  • Gradual Release: Unifying Declassification, Encryption and Key Release Policies
    Gradual Release: Unifying Declassification, Encryption and Key Release Policies Aslan Askarov Andrei Sabelfeld Department of Computer Science and Engineering Chalmers University of Technology 412 96 Göteborg, Sweden Abstract tion release, exposing the other aspects for possible attacks. It is striking that these approaches fall into two mostly sep- Information security has a challenge to address: en- arate categories: revelation-based (as in information pur- abling information-flow controls with expressive informa- chase, aggregate computation, moves in a game, etc.) and tion release (or declassification) policies. Existing ap- encryption-based declassification (as in sending encrypted proaches tend to address some aspects of information re- secrets over an untrusted network, storing passwords, etc.). lease, exposing the other aspects for possible attacks. It It is essential that declassification policies support a combi- is striking that these approaches fall into two mostly sep- nation of these categories: for example, a possibility to re- arate categories: revelation-based (as in information pur- lease the result of encryption should not be abused to release chase, aggregate computation, moves in a game, etc.) and cleartext through the same declassification mechanism. encryption-based declassification (as in sending encrypted This paper introduces gradual release, a policy that uni- secrets over an untrusted network, storing passwords, etc.). fies declassification, encryption, and key release policies. This paper introduces gradual release, a policy that uni- As we explain below, the latter is not only a useful fea- fies declassification, encryption, and key release policies. ture, but also a vital component for connecting revelation- We model an attacker’s knowledge by the sets of possible se- based and encryption-based declassification.
    [Show full text]
  • The Book of Common Prayer
    The Book of Common Prayer and Administration of the Sacraments and Other Rites and Ceremonies of the Church Together with The Psalter or Psalms of David According to the use of The Episcopal Church Church Publishing Incorporated, New York Certificate I certify that this edition of The Book of Common Prayer has been compared with a certified copy of the Standard Book, as the Canon directs, and that it conforms thereto. Gregory Michael Howe Custodian of the Standard Book of Common Prayer January, 2007 Table of Contents The Ratification of the Book of Common Prayer 8 The Preface 9 Concerning the Service of the Church 13 The Calendar of the Church Year 15 The Daily Office Daily Morning Prayer: Rite One 37 Daily Evening Prayer: Rite One 61 Daily Morning Prayer: Rite Two 75 Noonday Prayer 103 Order of Worship for the Evening 108 Daily Evening Prayer: Rite Two 115 Compline 127 Daily Devotions for Individuals and Families 137 Table of Suggested Canticles 144 The Great Litany 148 The Collects: Traditional Seasons of the Year 159 Holy Days 185 Common of Saints 195 Various Occasions 199 The Collects: Contemporary Seasons of the Year 211 Holy Days 237 Common of Saints 246 Various Occasions 251 Proper Liturgies for Special Days Ash Wednesday 264 Palm Sunday 270 Maundy Thursday 274 Good Friday 276 Holy Saturday 283 The Great Vigil of Easter 285 Holy Baptism 299 The Holy Eucharist An Exhortation 316 A Penitential Order: Rite One 319 The Holy Eucharist: Rite One 323 A Penitential Order: Rite Two 351 The Holy Eucharist: Rite Two 355 Prayers of the People
    [Show full text]
  • SCHOOL LITURGY for the DISTRIBUTION of ASHES ASH WEDNESDAY They May Be Seen by Others
    SCHOOL LITURGY FOR THE DISTRIBUTION OF ASHES ASH WEDNESDAY they may be seen by others. Truly I tell you, they SIGN OF THE CROSS have received their reward. But whenever you pray, go into your room and shut the door and pray to In the name of the Father and of the Son and of the your Father who is in secret; and your Father who Holy Spirit. Amen. sees in secret will reward you. And whenever you fast, do not look dismal, like the hypocrites, for they INTRODUCTION disfigure their faces so as to show others that they are fasting. Truly I tell you, they have received their On Ash Wednesday we wear Ashes on our reward. But when you fast, put oil on your head and foreheads. This reminds us that we belong to God, wash your face, so that your fasting may be seen not when we were baptised we became members of by others but by your Father who is in secret; and God’s family, that we are Christians. What else do your Father who sees in secret will reward you. we do during Lent, maybe we give up sweets, or crisps, maybe we give up hitting our brothers or The Gospel of the Lord. sisters, maybe we start doing what our mothers and fathers tell us, or what the teacher tells us. Maybe PRAYER OF BLESSING we get up early in the morning and go to mass with our families during lent. As Dear friends in Christ, let us ask our Father to bless We are all members of God’s family we should love these Ashes which we will use as the mark of our each other.
    [Show full text]
  • The Power of Interoperability: Why Objects Are Inevitable
    The Power of Interoperability: Why Objects Are Inevitable Jonathan Aldrich Carnegie Mellon University Pittsburgh, PA, USA [email protected] Abstract 1. Introduction Three years ago in this venue, Cook argued that in Object-oriented programming has been highly suc- their essence, objects are what Reynolds called proce- cessful in practice, and has arguably become the dom- dural data structures. His observation raises a natural inant programming paradigm for writing applications question: if procedural data structures are the essence software in industry. This success can be documented of objects, has this contributed to the empirical success in many ways. For example, of the top ten program- of objects, and if so, how? ming languages at the LangPop.com index, six are pri- This essay attempts to answer that question. After marily object-oriented, and an additional two (PHP reviewing Cook’s definition, I propose the term ser- and Perl) have object-oriented features.1 The equiva- vice abstractions to capture the essential nature of ob- lent numbers for the top ten languages in the TIOBE in- jects. This terminology emphasizes, following Kay, that dex are six and three.2 SourceForge’s most popular lan- objects are not primarily about representing and ma- guages are Java and C++;3 GitHub’s are JavaScript and nipulating data, but are more about providing ser- Ruby.4 Furthermore, objects’ influence is not limited vices in support of higher-level goals. Using examples to object-oriented languages; Cook [8] argues that Mi- taken from object-oriented frameworks, I illustrate the crosoft’s Component Object Model (COM), which has unique design leverage that service abstractions pro- a C language interface, is “one of the most pure object- vide: the ability to define abstractions that can be ex- oriented programming models yet defined.” Academ- tended, and whose extensions are interoperable in a ically, object-oriented programming is a primary focus first-class way.
    [Show full text]
  • Analytická Řešení Vybraných Typů Diferenciálních Rovnic
    VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA STROJNÍHO INŽENÝRSTVÍ FACULTY OF MECHANICAL ENGINEERING ÚSTAV AUTOMATIZACE A INFORMATIKY INSTITUTE OF AUTOMATION AND COMPUTER SCIENCE ANALYTICKÁ ŘEŠENÍ VYBRANÝCH TYPŮ DIFERENCIÁLNÍCH ROVNIC: SOFTWAROVÁ PODPORA PRO STUDENTY TECHNICKÝCH OBORŮ ANALYTICAL SOLUTIONS FOR SELECTED TYPES OF DIFFERENTIAL EQUATIONS: SOFTWARE SUPPORT TOOL FOR STUDENTS IN TECHNICAL FIELDS BAKALÁŘSKÁ PRÁCE BACHELOR'S THESIS AUTOR PRÁCE Daniel Neuwirth, DiS. AUTHOR VEDOUCÍ PRÁCE Ing. Jan Roupec, Ph.D. SUPERVISOR BRNO 2017 ABSTRAKT Cílem této práce bylo vytvořit počítačovou aplikaci s jednoduchým uživatelským rozhraním, určenou pro řešení vybraných typů diferenciálních rovnic, jejíž výstup není omezen na prosté zobrazení konečného výsledku, nýbrž zahrnuje i kompletní postup výpočtu, a díky tomu může sloužit jako podpůrná výuková pomůcka pro studenty vysokých škol. ABSTRACT The aim of this thesis was to create a computer application with a simple user interface for solving selected types of differential equations, whose output is not limited to display a final result only, but also includes a complete calculation procedure and therefore can serve as a supportive teaching aid for university students. KLÍČOVÁ SLOVA diferenciální rovnice, počítačový algebraický systém, programovací jazyk C++ KEYWORDS differential equation, computer algebra system, C++ programming language BIBLIOGRAFICKÁ CITACE NEUWIRTH, Daniel. Analytická řešení vybraných typů diferenciálních rovnic: softwarová podpora pro studenty technických oborů. Brno: Vysoké učení technické v Brně, Fakulta strojního inženýrství, 2017. 77 s. Vedoucí bakalářské práce Ing. Jan Roupec, Ph.D. PODĚKOVÁNÍ Rád bych poděkoval vedoucímu své bakalářské práce Ing. Janu Roupcovi, Ph.D. za odborné vedení při tvorbě této práce, za cenné rady a návrhy ke zlepšení, drobné korektury a zejména za jeho entuziasmus, se kterým k tomuto procesu přistupoval.
    [Show full text]