Experiences using SPARK in an Undergraduate CS Course Dr. Anthony S. Ruocco Roger Williams University Attendance made possible through.

Slides:



Advertisements
Similar presentations
Implementing the Tech Standards Presenter: Eric Curts eTech|OHIO Tech Conference 2006.
Advertisements

E-Science Data Information and Knowledge Transformation Thoughts on Education and Training for E-Science Based on edikt project experience Dr. Denise Ecklund.
Fashion Design Program
Finding a Research Topic Janie Irwin CSE, Penn State with credits to Kathy Yelick, EECS, UC Berkeley.
Achieving Examination Success
Welcome Aboard! Denbigh High School Aviation Academy.
Which Course? Where Does Your City University Degree Lead? Dr. Sebastian Hunt Associate Dean.
1 Undergraduate Curriculum Revision Department of Computer Science February 10, 2010.
Compiler Construction by Muhammad Bilal Zafar (AP)
CSE 321: Case Studies in Component-Based Software.
Knowledge Retention from Introductory CS Courses Anthony Baxter Paul Piwowarski University of Kentucky.
TOPIC A Practitioners view of Software Engineering Undergraduate and Graduate degree programs at FSU. What are the courses would add value to existing.
School of Business University of Bridgeport Admissions Presentation Robert Gilmore, Ph.D. Associate Dean School of Business.
CS 331 / CMPE 334 – Intro to AI CS 531 / CMPE AI Course Outline.
Computer Science Department Program Improvement Plan December 3, 2004.
IS 421 Information Systems Management James Nowotarski 16 September 2002.
From Discrete Mathematics to AI applications: A progression path for an undergraduate program in math Abdul Huq Middle East College of Information Technology,
Fundamentals of Information Systems, Second Edition
Promoting Student Engagement: Involving Students with NSSE Planning and Results William Woods University NSSE Users’ Workshop October 6-7, 2005.
CSC 171 – FALL 2004 COMPUTER PROGRAMMING LECTURE 0 ADMINISTRATION.
Overview of the MS Program Jan Prins. The Computer Science MS Objective – prepare students for advanced technical careers in computing or a related field.
Software Verification and Validation (V&V) By Roger U. Fujii Presented by Donovan Faustino.
Project Management and overview 1 Advanced Project Management- Introduction Ghazala Amin.
Assessment Report Department of Psychology School of Science & Mathematics D. Abwender, Chair J. Witnauer, Assessment Coordinator Spring, 2013.
GRAMMATICAL ANALYSIS  Applications to YOUR Discipline.
PROGRAMMING LANGUAGES The Study of Programming Languages.
Utah Valley State College CNS, PEng, and EART Planning Meeting.
S/W Project Management
More than just products….Performance DESIGN EDUCATORS WORKSHOP.
C 3 Collaboration & the Common Core Jamai Blivin CEO, Innovate+Educate.
CS 153: Concepts of Compiler Design August 24 Class Meeting Department of Computer Science San Jose State University Fall 2015 Instructor: Ron Mak
Integrating Parallel and Distributed Computing Topics into an Undergraduate CS Curriculum Andrew Danner & Tia Newhall Swarthmore College Third NSF/TCPP.
Lesson 6. GCSE Computing – programming languages Candidates should be able to:  describe common tools and facilities available in an integrated development.
CLC reading program Nguyen Thi Thu Trang. In-class activities Assignment Assessment Add your text in here Reading program Objectives Contents.
Computer Science Department 1 Undergraduate Degree Program Computer Science Chair Dr. Kurt Maly.
Software Engineering CS3003 Lecture 1 Introduction to the module Dr Tracy Hall.
Help Students Help Themselves - CS291/CS490 Mentoring Program Lisa L. Fan, Ph.D Department of Computer Science, University of Regina.
Welcome to CS 115! Introduction to Programming. Class URL Write this down!
M.S in CS Introduction & more How do I select a concentration area? by Xudong Yu What is a concentration area? What is a topic paper? Thesis...is that.
Senior Design Experience Semester II Project Requirements and Timeline
Integrating the Standards for Mathematical Practice with the Standards for Mathematical Content Part One – K-5 Math Oct. 23,
LOG 101 Curriculum Review 16 Jul 04 Richard A. Andrews, CPL Course Manager.
CS453 LectureIntroduction1 CS453 Compiler Construction Instructor:Wim Bohm Computer Science Building 470 TA: tba
Setting the Standard to Support Retention Mairin Nicell Heather Sayers Derek Woods Jennifer Hyndman.
CLARIS Training on Matlab MATLAB & Practical Applications on Climate Variability Studies DCAO-UBA, Buenos Aires, February 2006 Course delivered by.
Fundamentals of Information Systems, Second Edition 1 Systems Development.
C o n f i d e n t i a l 1 Course: BCA Semester: III Subject Code : BC 0042 Subject Name: Operating Systems Unit number : 1 Unit Title: Overview of Operating.
The Evolution of Peer Assisted Learning at Penn State, University Park.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
 Course Overview Distributed Systems IT332. Course Description  The course introduces the main principles underlying distributed systems: processes,
Compiler Construction (CS-636)
Alessio Peluso 1 Critical evaluation of the module ‘Introduction to Engineering Thermo Fluid Dynamics’ First Steps in Learning and Teaching in Higher Education.
Introduction to Programming in VB Chapter 1. 2 Software Development Life Cycle Gather Requirements Design Program Code & Test Program Implement u Software.
More Computer Science in your Future? CSE 142 Autumn
Programming Fundamentals Lecture No. 2. Course Objectives Objectives of this course are three fold 1. To appreciate the need for a programming language.
Teaching Portfolios TA Training Session. What is a Teaching Portfolio?  Three types used in academia  The academic portfolio  The teaching portfolio.
Software Engineer Basic IntroductionJob ClassificationCompetenciesJob OverviewJob content.
Risk Analysis P. Cennini AB-ATB on behalf of the n_TOF Team  Procedure  Documents in preparation  Conclusions Second n_TOF External Panel Review, CERN,
Professional Learning and Collaboration Burlington Edison School District April 7 th, 2014.
LOG 101 Curriculum Review 28 Jun 02 Richard A. Andrews, CPL Course Manager.
New Curricula Proposal at FSMN by Miroslav Ćirić & Predrag Krtolica.
Dr. Antar Abdellah. To enable you as an EFL teacher to: 1. Develop and articulate instructional objectives adequately and clearly. 2. Create, construct,
Course Overview Stephen M. Thebaut, Ph.D. University of Florida Software Engineering.
Systems Analysis & Design N106
Software Design and Development
Ap computer science 2 AP COMPUTER SCIENCE A EXAM SPRING OF EVERY YEAR
Understanding Standards Art and Design (Higher)
Neeraj Mittal September 29, 2017
Lesson Objectives Aims You should be able to:
Technology Adoption Services
Presentation transcript:

Experiences using SPARK in an Undergraduate CS Course Dr. Anthony S. Ruocco Roger Williams University Attendance made possible through the Educator Grant Program

Agenda Why this course Course Development Assessment Future Possibilities (some unexpected effects)

Ada95 Course Needed a CS elective suitable for juniors/seniors Asked constituents about Ada95 Local industry was uninterested One employer supported it (Navy Research Lab) Dean was skeptical More conducive to the idea of well-constructed software Planned for a software development course using Ada95

High Integrity Software SPARK toolset available at SIGSCE2004 Gnat Programming System (GPS) available via AdaCorp Academic Alliance Professional grade IDE Some SPARK tools available as drop-down menu items JGRASP Used in other courses Requires use of SPARK toolset ‘outside’ the IDE

The students Seven total 2 Juniors 4 Seniors 1 December grad Courses (Completed/Concurrent) Intro to Programming(7) Data Structures(7) Computer Organization(7) Programming Languages(7) Theory of Computation(5/2) Analysis of Alg(5) Operating Systems(2/3) Compiler Design (2/3) Senior Design I (2/3) Senior Design II (2)

Course Description This course focuses on programming techniques for computer systems found in safety critical environments such as avionics, power plant and/or transportation systems. The course uses a specialized language (SPARK) and its tools to write and examine high-integrity code segments. Students become familiar with some of the differences between general programming languages and specialized languages. Use of the risks.comp news group also highlights non software-specific risks in large systems.

Course Objectives Understand the safety/risk implications inherent in high integrity software systems. Use specialized software tools in the production of high integrity code segments. Use a specialized programming language to produce high integrity code segments. Research an issue in high integrity software and present a possible solution.

Course Layout Ada95 / SPARK language basics (10 lessons) Examiner tools and software design (14 lessons) gtkAda tools (4 lessons – target of opportunity) Four projects Two individual projects One group project One course project

SPARK Overview A language fully contained within Ada95 Syntactically, it is Ada code linked by special annotations to a tool-set Produces a series of reports of the results (but it is not a compiler)

Projects P1: Matrix Individual IDE and SPARK familiarization Enforced requirement for all ranges to be subtypes P2: Extension of Project 1 No one thought of using child-packages

Projects (cont) P3: max-flow Given functional pascal code Two groups (size 3 and 4) This was an ‘interesting’ project P4: Flight control simulator Three groups of 2 for Pitch, Roll, Yaw control Each group gave one person to a ‘control team’ They were to work independently, then link their pieces

Assessment & Lessons Learned First time course was offered Only 7 students Lots of opportunity for one-to-one discussions of content Some follow-up after the course with graduates

Course Development This course focuses on programming techniques for computer systems found in safety critical environments such as avionics, power plant and/or transportation systems. The course uses a specialized language (SPARK) and its tools to write and examine high-integrity code segments. Students become familiar with some of the differences between general programming languages and specialized languages. Use of the risks.comp news group also highlights non software-specific risks in large systems.

Course Objectives Understand the safety/risk implications inherent in high integrity software systems. Use specialized software tools in the production of high integrity code segments. Use a specialized programming language to produce high integrity code segments. Research an issue in high integrity software and present a possible solution.

Student Comments Students felt SPARK was a unique language (not just an Ada subset) Students felt they needed to know Ada before starting SPARK Students would like to see Ada95 as a regular elective and SPARK done on some cycle All students felt the most important pre-req for this course was Programming Languages (a survey course) Students were surprised by how much the OS and compiler removes from the programmer All students were able to link some aspect of every previous course they had to this course*

Lessons learned Had to do parallel development of Ada as SPARK constructs were covered The GPS IDE with SPARK drop down menu helped instill habit of running SPARK tools prior to compilation Pay attention to SPARK license, it expires in September (after the semester was underway)

Future possibilities (FIE 2006 paper) SPARK supports a number of concepts from other courses Five categories from CAC Algorithms, software design, computer organization & architecture, data structures, programming languages Algorithms: understanding all variables, as well as the operating space of the algorithm, tools to support formal proof Software Design: strong focus on design by contract. All the parts need to be completely understood to integrate them

Computer Org and Architecture: Use of config files allows for various target machines Data structures: Reduced operating space enforces careful data structure design and links to algorithm Programming languages: SPARK itself Consider SPARK as an overall educational tool, not just a language

Thanks to: Adacore: Rod Chapman at Praxis: