.NET MSc in Distributed Systems David Grey Rob Miles University of Hull, UK.

Slides:



Advertisements
Similar presentations
Verification and Validation
Advertisements

A2 Unit 4A Geography fieldwork investigation Candidates taking Unit 4A have, in section A, the opportunity to extend an area of the subject content into.
Which Course? Where Does Your City University Degree Lead? Dr. Sebastian Hunt Associate Dean.
Annoucements  Next labs 9 and 10 are paired for everyone. So don’t miss the lab.  There is a review session for the quiz on Monday, November 4, at 8:00.
Course resources available from What is Scratch? How does Scratch fit into the Computing PoS? Progression in Computing.
Teaching Courses in Scientific Computing 30 September 2010 Roger Bielefeld Director, Advanced Research Computing.
2 The key challenge to maintain a robust petroleum industry is ensuring an adequate supply of well trained professionals now and in future The development.
Educating Programmers: A Customer Perspective Alexander Stepanov A9.com Workshop on Quality Software: A Festschrift for Bjarne Stroustrup Texas A&M University,
DECO3008 Design Computing Preparatory Honours Research KCDCC Mike Rosenman Rm 279
Advances research methods and proposal writing Ronan Fitzpatrick School of Computing, Dublin Institute of Technology. September 2008.
System Design and Analysis
Debugging CPSC 315 – Programming Studio Fall 2008.
Postgraduate Engineering Education in the Arab World: What is Really Needed? Muhammad Taher Abuema’atti King Fahd University of Petroleum and Minerals.
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 19Slide 1 Verification and Validation l Assuring that a software system meets a user's.
School of Computer ScienceG53FSP Formal Specification1 Dr. Rong Qu Introduction to Formal Specification
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 22 Slide 1 Verification and Validation.
Science Inquiry Minds-on Hands-on.
IT Job Roles Task 20. Software Engineer Job Description Software engineers are responsible for creating and maintaining software of various different.
Adobe Flash CS4 Revealed Author: Shuman Copyright 2010 ISBN:
Confidence, mathematics and performance of Engineering Studies candidates at the New South Wales Higher School Certificate examination John Barlow Australian.
15 th Conference on Software Engineering Education and Training Foundation Software Engineering Practices for Capstone Projects and Beyond Annegret Goold.
COMPUTER SCIENCE LYNDA THOMAS – SENIOR LECTURER, ACADEMIC ADVISOR.
Dr. Pedro Mejia Alvarez Software Testing Slide 1 Software Testing: Building Test Cases.
Introduction to Systems Analysis and Design Trisha Cummings.
Chapter 2 Build Your First Project A Step-by-Step Approach 2 Exploring Microsoft Visual Basic 6.0 Copyright © 1999 Prentice-Hall, Inc. By Carlotta Eaton.
Copyright © 2009 On The Edge Software Consulting Advanced Enterprise Java Instructional Plan Presentation Tier Design using an Event Driven Design Methodology.
Verification and Validation Yonsei University 2 nd Semester, 2014 Sanghyun Park.
Business research methods: using questions and active listening
© Janice Regan, CMPT 128, Jan CMPT 128 Introduction to Computing Science for Engineering Students Creating a program.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 22 Slide 1 Verification and Validation.
Symposium 2001June 24, 2001 Curriculum Is Just the Beginning Chris Stephenson University of Waterloo.
1 8/29/05CS360 Windows Programming Professor Shereen Khoja.
11 Getting Started with C# Chapter Objectives You will be able to: 1. Say in general terms how C# differs from C. 2. Create, compile, and run a.
Designing and implementing of the NQF Tempus Project N° TEMPUS-2008-SE-SMHES ( )
Introduction CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
Verification and Validation Overview References: Shach, Object Oriented and Classical Software Engineering Pressman, Software Engineering: a Practitioner’s.
Introduction CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
1 Chapter Nine Engineering Your Career. 2 Engineering Careers  Electrical and computer engineers find employment in: 1.Private industry. 2.Government.
.NET and the SSCLI as the basis of a Distributed Systems Masters Degree Rob Miles University of Hull, UK.
The Balance Between Theoretical and Practical Work Within Electrical and Computer Engineering Courses Dr. Bahawodin Baha March Development Partnerships.
Guiding Principles. Goals First we must agree on the goals. Several (non-exclusive) choices – Want every CS major to be educated in performance including.
Software Engineering Chapter 3 CPSC Pascal Brent M. Dingle Texas A&M University.
KATHOLIEKE UNIVERSITEIT LEUVEN 1.NET Curriculum Workshop Teaching Software Security: Case Studies on the.NET Framework Frank Piessens and Wouter Joosen.
CS Data Structures I Chapter 2 Principles of Programming & Software Engineering.
Chapter 12: Software Inspection Omar Meqdadi SE 3860 Lecture 12 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Design of a Typical Course s c h o o l s o f e n g I n e e r I n g S. D. Rajan Professor of Civil Engineering Professor of Aerospace and Mechanical Engineering.
Teaching Information Ethics with a Common Curriculum Based on a Presentation made at H2K2 July 12, 2002 Updated September 12, 2002 H2K2 Greg Newby
 Programming - the process of creating computer programs.
Instructional Plan Template | Slide 1 AET/515 Instructional Plan Advanced Enterprise Java Platform Training Presentation Tier Design using an Event Driven.
CSI 1340 Introduction to Computer Science II Chapter 1 Software Engineering Principles.
Challenging students to acquire deeper knowledge in HCI course N. Ackovska and M. Kostoska 15 th Workshop on “Software Engineering and Reverse Engineering”
Version 02U-1 Computer Security: Art and Science1 Correctness by Construction: Developing a Commercial Secure System by Anthony Hall Roderick Chapman.
Introduction CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
Alexandria University Faculty of Science Computer Science Department Introduction to Programming C++
Experience with Code Hunt in K-12 Alfred Thompson Bishop Guertin High School
+ Game Design Careers. + Game Development Developing an interesting video game is a very challenging task. It usually takes many different people working.
Software Engineering Salihu Ibrahim Dasuki (PhD) CSC102 INTRODUCTION TO COMPUTER SCIENCE.
FOP: Multi-Screen Apps
Using core competencies in curriculum design
Austrian CLIL The story so far
Dr. Fernando Paniagua Associate Professor CSIT Department
Types for Programs and Proofs
CSC 480 Software Engineering
Introduction CSE 1310 – Introduction to Computers and Programming
Change to university degree accreditation incorporating employability:
Introduction to Systems Analysis and Design
CSCE 315 – Programming Studio, Fall 2017 Tanzir Ahmed
Technical Graphics Design Appreciation and Awareness
Computing and Mathematics
Topic 1: Introduction to the Module and an Overview of Agile
Presentation transcript:

.NET MSc in Distributed Systems David Grey Rob Miles University of Hull, UK

Overview  Teaching Undergraduate Computer Science Traditional approaches Traditional approaches Challenges and opportunities Challenges and opportunities  Making a.NET-based degree Background, aims and content Background, aims and content The role of.NET, SSCLI (Rotor) and AA programmes The role of.NET, SSCLI (Rotor) and AA programmes  Example laboratory exercise

Hull  ~ 580 undergraduate students,  ~ 60 taught/~ 40 research postgraduates  Undergraduate degrees Computer Science, Software Engineering, Business Information Engineering, Internet Computing, Games Development Computer Science, Software Engineering, Business Information Engineering, Internet Computing, Games Development  Taught postgraduate degrees Graphics and Visualization, Games Programming, Internet Computing Graphics and Visualization, Games Programming, Internet Computing

Undergraduate Computer Science  Our approach is fairly conventional: Year One Year One Introduce broad range of underlying theoryIntroduce broad range of underlying theory Year Two Year Two Extend Year One theory with more advanced topics and greater depth of contentExtend Year One theory with more advanced topics and greater depth of content Year Three Year Three Individual specialism and further advanced topicsIndividual specialism and further advanced topics Large individual software projectLarge individual software project  Our graduates have a broad range of skills which will serve them well in the future, but these are not fully developed

The Challenge  Three years is not enough time!  To achieve this breadth of coverage we tend to lose the depth  We do not have time to expose the students to large systems and appropriate development techniques  We have little opportunity to give students all the testing/debugging skills needed by industry

The Result  In September 2003 we begin teaching the.NET MSc in Distributed Systems Development  This degree: is a world first, developed in conjunction with Microsoft UK and the Rotor product team is a world first, developed in conjunction with Microsoft UK and the Rotor product team is a response to the challenges we face at the undergraduate level and the skills that employers require is a response to the challenges we face at the undergraduate level and the skills that employers require uses Microsoft.NET to explore distributed systems concepts uses Microsoft.NET to explore distributed systems concepts uses Rotor to explore the design and implementation of modern languages and distributed computing environments uses Rotor to explore the design and implementation of modern languages and distributed computing environments offers in-depth development of testing and debugging skills using the Rotor source as an example of a large, commercial-quality software system offers in-depth development of testing and debugging skills using the Rotor source as an example of a large, commercial-quality software system

.NET Degree – Aims & Content  Aims Give advanced coverage of modern distributed computing techniques Give advanced coverage of modern distributed computing techniques Develop skills in working with large codebases Develop skills in working with large codebases To develop “active practitioners” To develop “active practitioners” Provide hands-on practical experience underpinned by advanced theoretical concepts Provide hands-on practical experience underpinned by advanced theoretical concepts Designed in conjunction with Microsoft, but taught as a genuine academic course Designed in conjunction with Microsoft, but taught as a genuine academic course

Degree Structure  Three stages:  Certificate Stage Skills to underpin the original work Skills to underpin the original work  Diploma Stage Advanced computing topics Advanced computing topics  Masters Stage Practical deployment of techniques Practical deployment of techniques

Certificate Stage

Diploma Stage

Masters Stage  Large, individual project based on real- world problem using Rotor or other commercial-grade software  Examples FORTH implementation FORTH implementation Custom Garbage Collection Custom Garbage Collection Custom Remoting / object mobility Custom Remoting / object mobility Code profiling Code profiling

The Role of.NET and Rotor .NET provides an overreaching example of distributed systems concepts/techniques  Rotor provides “down to the metal” implementation details “down to the metal” implementation details excellent environment for enhancing testing/ debugging skills excellent environment for enhancing testing/ debugging skills  Not simply a.NET degree The techniques which are learnt can be applied in any area The techniques which are learnt can be applied in any area

Debugging Skills  Teaching what to do when it all goes wrong is difficult  Students will have to debug their own programs but do not have to spend much time debugging other peoples  We are setting the “worst case” scenario: There is a problem with the underlying implementation There is a problem with the underlying implementation Their program is fine, but it still doesn’t work! Their program is fine, but it still doesn’t work!

A Rotor-based Laboratory Exercise  A live demo  A debugging exercise from the Extensible Systems module designed to: get the students thinking about all aspects of the compilation/execution cycle (challenges some pre-conceptions?) get the students thinking about all aspects of the compilation/execution cycle (challenges some pre-conceptions?) provide opportunities to develop debugging and testing skills provide opportunities to develop debugging and testing skills familiarise the student with the Rotor code and the techniques used to implement it familiarise the student with the Rotor code and the techniques used to implement it

Debugging Exercise – Step 1  Student are asked to write a C# program to bubble sort the following numbers static float[] data = {45.0, 6.5, 435.2, 22.0, 6.3, 100.1, 0.02, 99.9, 45.0, 17.4, 56.4};  Being kind people, we even suggest an algorithm Simple bubble sort Simple bubble sort

Debugging Exercise – Step 2  Compile and run the program using the Rotor C# compiler and the Rotor CLI  At this point the students have to decide if their code is at fault Inexperienced programmers are prone to problems with array bounds Inexperienced programmers are prone to problems with array bounds First they must convince themselves that their program is correct First they must convince themselves that their program is correct They will not expect the language implementation to cause problems They will not expect the language implementation to cause problems

Debugging Exercise – Step 3  Can we verify the correctness of the code in any way? Use the.NET C# compiler and CLR Use the.NET C# compiler and CLR  Hypothesis if it works in.NET our code must be valid if it works in.NET our code must be valid  Outcome The program works correctly in this environment The program works correctly in this environment

Debugging Exercise – Step 4 Conclusion:  Something about the Rotor environment or C# compiler causes the problem  Hypotheses Something is wrong with the implementation of for loops? Something is wrong with the implementation of for loops? Something is wrong with the < operator Something is wrong with the < operator  Write some simple programs to test these hypotheses

Debugging Exercise – Step 5  Something is definitely not right…  Hypothesis The C# compiler generates Common Intermediate Language code. Perhaps the code generation is incorrect. The C# compiler generates Common Intermediate Language code. Perhaps the code generation is incorrect.  Use ildasm to disassemble the compiler output to see if this hypothesis is correct

Debugging Exercise – Step 6  The compiler is outputting the wrong instruction for <. Why?  Solution Examine the source code of the C# compiler Examine the source code of the C# compiler We find an error in the compiler source code for the ‘less than’ operator. We find an error in the compiler source code for the ‘less than’ operator.  Fix the error and retest The for loop now works The for loop now works The comparison and bubble sort still fail The comparison and bubble sort still fail

Debugging Exercise…  We don’t have time to show it, but there is an error in the SSCLI JIT compiler relating to floating point branch instructions  Students need to use similar debugging skills to discover and rectify this

Process  This exercise uses Rotor to confront some of the student’s preconceptions.  Most new graduates would: Not produce sufficient test cases to narrow the problem down to the floating point comparison Not produce sufficient test cases to narrow the problem down to the floating point comparison Not suspect the compiler of producing incorrect code Not suspect the compiler of producing incorrect code Think that they had not fixed the compiler after removing the bug Think that they had not fixed the compiler after removing the bug  The Rotor source is large and unfamiliar – exactly what they will face in the real world

Learning Outcomes  Importance of methodical approach  Design of test cases  Navigation of code base  Debugging tools  Disassembly tools  An introduction to intermediate language and Just-In-Time compilation

Summary  We feel that our.NET degree will significantly enhance the abilities of students and build on an undergraduate course  We are really looking forward to starting this course  It will be as interesting for us as it is for the students!