Debugging and Bug Tracking. Slides provided by Prof. Andreas Zeller, Universität des Saarlands
|
|
|
- Helen Burns
- 10 years ago
- Views:
Transcription
1 Debugging and Bug Tracking Slides provided by Prof. Andreas Zeller, Universität des Saarlands
2 Learning goals 1. part: Debugging Terminology o Defect o Infection o Failure Debugging with the Scientific Method TRAFFIC Principle 2. part: Tracking Problems Classifying problems Severity and Priority Problem Lifecycle MSE SEA Prof. Peter Sommerlad 2
3 How Failures Come to be Andreas Zeller
4 An F-16 (northern hemisphere) 4
5 An F-16 (southern hemisphere) 5
6 F-16 Landing Gear 6
7 The First Bug September 9,
8 More Bugs 8
9 Facts on Debugging Software bugs are costing ~60 bln US$/yr Improvements could reduce cost by 30% Validation (including debugging) can easily take up to 50-75% of the development time When debugging, some people are three times as efficient than others 9
10 A Sample Program $ sample Output: $ sample Output:
11 How to Debug (Sommerville 2004) Locate error Design error repair Repair error Re-test program 11
12 The Traffic Principle T R A F F I C rack the problem eproduce utomate ind Origins ocus solate orrect 12
13 The Traffic Principle T R A F F I C rack the problem eproduce utomate ind Origins ocus solate orrect 13
14 From Defect to Failure 1. The programmer creates a defect an error in the code. 2. When executed, the defect creates an infection an error in the state. Variables 3. The infection propagates. 4. The infection causes a failure. This infection chain must be traced back and broken. t 14
15 The Curse of Testing Not every defect causes a failure! Testing can only show the presence of errors not their absence. (Dijkstra 1972) Variables 15
16 Debugging Every failure can be traced back to some infection, and every infection is caused by some defect. Variables Debugging means to relate a given failure to the defect and to remove the defect. 16
17 The Scientific Method The scientific method is a general pattern of how to find a theory that explains (and predicts) some aspect of the universe Called scientific method because it s supposed to summarize the way that (experimental) scientists work 17
18 The Scientific Method 1. Observe some aspect of the universe. 2. Invent a hypothesis that is consistent with the observation. 3. Use the hypothesis to make predictions. 4. Tests the predictions by experiments or observations and modify the hypothesis. 5. Repeat 3 and 4 to refine the hypothesis. 18
19 A Theory When the hypothesis explains all experiments and observations, the hypothesis becomes a theory. A theory is a hypothesis that explains earlier observations predicts further observations In our context, a theory is called a diagnosis (Contrast to popular usage, where a theory is a vague guess) 19
20 Mastermind A Mastermind game is a typical example of applying the scientific method. Create hypotheses until the theory predicts the secret. 20
21 Scientific Method of Debugging Problem Report Hypothesis is supported: Code refine hypothesis Hypothesis Prediction Experiment Observation + Conclusion Run Hypothesis is rejected: create new hypothesis More Runs Diagnosis 21
22 Search in Space + Time variables " time?! 22
23 The Defect variables "! time! 23
24 A Program State 24
25 A Sample Program $ sample Output: $ sample Output:
26 Initial Hypothesis Hypothesis Prediction Experiment Observation Conclusion sample works. Output is Run sample as above. Output is 0 11 Hypothesis is rejected. 26
27 int main(int argc, char *argv[]) { int *a; int i; a = (int *)malloc((argc - 1) * sizeof(int)); for (i = 0; i < argc - 1; i++) a[i] = atoi(argv[i + 1]); shell_sort(a, argc); printf("output: "); for (i = 0; i < argc - 1; i++) printf("%d ", a[i]); printf("\n"); free(a); } return 0; 27
28 Find Origins variables! The 0 printed is the value of a[0]. Where does it come from? time!!!! Basic idea: Track or deduce value origins Separates relevant from irrelevant values! We can trace back a[0] to shell_sort 28
29 Hypothesis 1: a[] Hypothesis Prediction Experiment Observation Conclusion The execution causes a[0] = 0 At Line 37, a[0] = 0 should hold. Observe a[0] at Line 37. a[0] = 0 holds as predicted. Hypothesis is confirmed. 29
30 static void shell_sort(int a[], int size) { int i, j; int h = 1; do { h = h * 3 + 1; } while (h <= size); do { h /= 3; for (i = h; i < size; i++) { int v = a[i]; for (j = i; j >= h && a[j - h] > v; j -= h) a[j] = a[j - h]; if (i!= j) a[j] = v; } } while (h!= 1); } 30
31 Hypothesis 2:shell_sort() Hypothesis Prediction Experiment Observation Conclusion The infection does not take place until shell_sort. At Line 6, a[] = [11, 14]; size = 2 Observe a[] and size at Line 6. a[] = [11, 14, 0]; size = 3. Hypothesis is rejected. 31
32 Search in Time variables In shell_sort, the state must have time "!! become infected. Basic idea: Observe a transition from sane to infected. 32
33 Observing a Run variables argc argv [0] argv [1] a [0] a a [1] [2] i size h a = malloc(...) 3 "11""14"???? 0 i = 0 a[i] = atoi(argv[i + 1]) time i++ a[i] = atoi(argv[i + 1]) i++ shell_sort(a, argc) 3? 3 "11""14" 0 11? 2 return 0 33
34 Hypothesis 3: size Hypothesis Prediction Experiment Observation Conclusion size = 3 causes the failure. Changing size to 2 should make the output correct. Set size = 2 using a debugger. As predicted. Hypothesis is confirmed. 34
35 Specific Observation static void shell_sort(int a[], int size) { fprintf(stderr, At shell_sort ); for (i = 0; i < size; i++) fprintf(stderr, a[%d] = %d\n, i, a[i]); fprintf(stderr, size = %d\n, size); int i, j; $ sample int h = 1; a[0] = a[1] = 14 } a[2] = 0 size = 3 Output: 0 11 The state is infected at the call of shell_sort! 35
36 Fixing the Program int main(int argc, char *argv[]) { int *a; int i; a = (int *)malloc((argc - 1) * sizeof(int)); for (i = 0; i < argc - 1; i++) a[i] = atoi(argv[i + 1]); } shell_sort(a, argc); - 1);... $ sample Output:
37 Hypothesis 4: argc Hypothesis Prediction Experiment Observation Conclusion Invocation of shell_sort with size = argc causes the failure. Changing argc to argc - 1 should make the run successful. Change argc to argc - 1 and recompile. As predicted. Hypothesis is confirmed. 37
38 The Diagnosis Cause is Invoking shell_sort() with argc Proven by two experiments: Invoked with argc, the failure occurs; Invoked with argc - 1, it does not. Side-effect: we have a fix (Note that we don t have correctness but take my word) 38
39 Finding Causes Infected state Sane state The difference causes the failure 39
40 Search in Space Infected state Sane state argc = 3 Test? Mixed state 40
41 Search in Time Failing run Passing run argc = 3 argc = 3 Transition from argc to a[2] a[2] = 0 t 41
42 int main(int argc, char *argv[]) { int *a; // Input array a = (int *)malloc((argc - 1) * sizeof(int)); for (int i = 0; i < argc - 1; i++) a[i] = atoi(argv[i + 1]); // Sort array shell_sort(a, argc); Should be argc - 1 // Output array printf("output: "); for (int i = 0; i < argc - 1; i++) printf("%d ", a[i]); printf("\n"); } free(a); return 0; 42
43 Concepts A failure comes to be in three stages: 1. The programmer creates a defect 2. The defect causes an infection 3. The infection causes a failure -- an externally visible error. Not every defect results in an infection, and not every infection results in a failure. 43
44 Concepts (2) To debug a program, proceed in 7 steps: T R A F F I C rack the problem eproduce utomate ind Origins ocus solate orrect 44
45 Sources of Hypotheses Experimentation n controlled runs Induction n runs Observation 1 run Deduction 0 runs 45
46 Concepts of Debugging A cause of any event ( effect ) is a preceding event without which the effect would not have occurred. To isolate a failure cause, use the scientific method. Make the problem and its solution explicit. 46
Software Engineering. Software Development Process Models. Lecturer: Giuseppe Santucci
Software Engineering Software Development Process Models Lecturer: Giuseppe Santucci Summary Modeling the Software Process Generic Software Process Models Waterfall model Process Iteration Incremental
7th Marathon of Parallel Programming WSCAD-SSC/SBAC-PAD-2012
7th Marathon of Parallel Programming WSCAD-SSC/SBAC-PAD-2012 October 17 th, 2012. Rules For all problems, read carefully the input and output session. For all problems, a sequential implementation is given,
Debugging with TotalView
Tim Cramer 17.03.2015 IT Center der RWTH Aachen University Why to use a Debugger? If your program goes haywire, you may... ( wand (... buy a magic... read the source code again and again and...... enrich
Simplifying Failure-Inducing Input
Simplifying Failure-Inducing Input Ralf Hildebrandt and Andreas Zeller ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA) Portland, Oregon, August 23, 2000 [The Mozilla BugAThon]
Hands-on Hacking Unlimited
About Zone-H Attacks techniques (%) File Inclusion Shares misconfiguration SQL Injection DNS attack through social engineering Web Server external module intrusion Attack against the administrator/user
Lecture 18-19 Data Types and Types of a Language
Lecture 18-19 Data Types and Types of a Language April 29, 2014 Data Types and Types of a Language Data, Data Types and Types Type: Generalities Type Systems and Type Safety Type Equivalence, Coercion
Secure Programming with Static Analysis. Jacob West [email protected]
Secure Programming with Static Analysis Jacob West [email protected] Software Systems that are Ubiquitous Connected Dependable Complexity U Unforeseen Consequences Software Security Today The line between
How To Develop Software
Software Engineering Prof. N.L. Sarda Computer Science & Engineering Indian Institute of Technology, Bombay Lecture-4 Overview of Phases (Part - II) We studied the problem definition phase, with which
Tail call elimination. Michel Schinz
Tail call elimination Michel Schinz Tail calls and their elimination Loops in functional languages Several functional programming languages do not have an explicit looping statement. Instead, programmers
Networks and Protocols Course: 320301 International University Bremen Date: 2004-11-24 Dr. Jürgen Schönwälder Deadline: 2004-12-03.
Networks and Protocols Course: 320301 International University Bremen Date: 2004-11-24 Dr. Jürgen Schönwälder Deadline: 2004-12-03 Problem Sheet #10 Problem 10.1: finger rpc server and client implementation
Leak Check Version 2.1 for Linux TM
Leak Check Version 2.1 for Linux TM User s Guide Including Leak Analyzer For x86 Servers Document Number DLC20-L-021-1 Copyright 2003-2009 Dynamic Memory Solutions LLC www.dynamic-memory.com Notices Information
Andreas Burghart 6 October 2014 v1.0
Yocto Qt Application Development Andreas Burghart 6 October 2014 Contents 1.0 Introduction... 3 1.1 Qt for Embedded Linux... 3 1.2 Outline... 4 1.3 Assumptions... 5 1.4 Corrections... 5 1.5 Version...
Project 2: Bejeweled
Project 2: Bejeweled Project Objective: Post: Tuesday March 26, 2013. Due: 11:59PM, Monday April 15, 2013 1. master the process of completing a programming project in UNIX. 2. get familiar with command
Operating System Structure
Operating System Structure Lecture 3 Disclaimer: some slides are adopted from the book authors slides with permission Recap Computer architecture CPU, memory, disk, I/O devices Memory hierarchy Architectural
URI and UUID. Identifying things on the Web.
URI and UUID Identifying things on the Web. Overview > Uniform Resource Identifiers (URIs) > URIStreamOpener > Universally Unique Identifiers (UUIDs) Uniform Resource Identifiers > Uniform Resource Identifiers
CS4507 Advanced Software Engineering
CS4507 Advanced Software Engineering Lectures 2 & 3: Software Development Lifecycle Models A O Riordan, 2015 Some diagrams from Sommerville, some notes from Maciaszek/Liong Lifecycle Model Software development
Introduction to Object-Oriented Programming
Introduction to Object-Oriented Programming Programs and Methods Christopher Simpkins [email protected] CS 1331 (Georgia Tech) Programs and Methods 1 / 8 The Anatomy of a Java Program It is customary
Iron Chef: John Henry Challenge
Iron Chef: John Henry Challenge Brian Chess Pravir Chandra Black Hat 3/27/2008 Amsterdam Sean Fay Jacob West Concept We love Iron Chef. We can t cook. Concept Compare tools and manual code review in head-tohead
SQLITE C/C++ TUTORIAL
http://www.tutorialspoint.com/sqlite/sqlite_c_cpp.htm SQLITE C/C++ TUTORIAL Copyright tutorialspoint.com Installation Before we start using SQLite in our C/C++ programs, we need to make sure that we have
Logging. Working with the POCO logging framework.
Logging Working with the POCO logging framework. Overview > Messages, Loggers and Channels > Formatting > Performance Considerations Logging Architecture Message Logger Channel Log File Logging Architecture
Fuzzing Apache OpenOffice
Fuzzing Apache OpenOffice An Approach to Automated Black-box Security Testing Rob Weir April 7th, 2014 Who is Rob? 1) Rob Weir from Westford Massachusetts 2) [email protected], @rcweir, http://www.linkedin.com/in/rcweir
CSC230 Getting Starting in C. Tyler Bletsch
CSC230 Getting Starting in C Tyler Bletsch What is C? The language of UNIX Procedural language (no classes) Low-level access to memory Easy to map to machine language Not much run-time stuff needed Surprisingly
Debugging Strategies
CS106A Winter 2012-2013 Handout #25 February 25, 2013 Debugging Strategies Based on a handout by Eric Roberts, Mehran Sahami, and Nick Parlante Much of your time as a computer programmer will likely be
How to Write a Simple Makefile
Chapter 1 CHAPTER 1 How to Write a Simple Makefile The mechanics of programming usually follow a fairly simple routine of editing source files, compiling the source into an executable form, and debugging
Copyright 2001, Bill Trudell. Permission is granted to copy for the PLoP 2001 conference. All other rights reserved.
The Secret Partner Pattern Revision 3a by Bill Trudell, July 23, 2001 Submitted to the Pattern Languages of Programs Shepherd: Neil Harrison PC Member: Kyle Brown Thumbnail This paper describes the Secret
Mining Metrics to Predict Component Failures
Mining Metrics to Predict Component Failures Nachiappan Nagappan, Microsoft Research Thomas Ball, Microsoft Research Andreas Zeller, Saarland University Overview Introduction Hypothesis and high level
Comp151. Definitions & Declarations
Comp151 Definitions & Declarations Example: Definition /* reverse_printcpp */ #include #include using namespace std; int global_var = 23; // global variable definition void reverse_print(const
How To Improve Software Quality
Software Quality and Standards Dr. James A. Bednar [email protected] http://homepages.inf.ed.ac.uk/jbednar Dr. David Robertson [email protected] http://www.inf.ed.ac.uk/ssp/members/dave.htm SEOC2 Spring
Code Refactoring and Defects
Code Refactoring and Defects Reusing this material This work is licensed under a Creative Commons Attribution- NonCommercial-ShareAlike 4.0 International License. http://creativecommons.org/licenses/by-nc-sa/4.0/deed.en_us
CS314: Course Summary
CS314: Course Summary Prof. Robert B. France Dept. of Computer Science Colorado State University Robert B. France 1 1 Software Development Issues Explored - 1 Software engineering basics Why do we need
Intro to GPU computing. Spring 2015 Mark Silberstein, 048661, Technion 1
Intro to GPU computing Spring 2015 Mark Silberstein, 048661, Technion 1 Serial vs. parallel program One instruction at a time Multiple instructions in parallel Spring 2015 Mark Silberstein, 048661, Technion
Software Testing. Quality & Testing. Software Testing
Software Testing Software Testing Error: mistake made by the programmer/developer Fault: a incorrect piece of code/document (i.e., bug) Failure: result of a fault Goal of software testing: Cause failures
All Your Code Belongs To Us Dismantling Android Secrets With CodeInspect. Steven Arzt. 04.10.2015 Secure Software Engineering Group Steven Arzt 1
All Your Code Belongs To Us Dismantling Android Secrets With CodeInspect Steven Arzt 04.10.2015 Secure Software Engineering Group Steven Arzt 1 04.10.2015 Secure Software Engineering Group Steven Arzt
Chapter 8 Software Testing
Chapter 8 Software Testing Summary 1 Topics covered Development testing Test-driven development Release testing User testing 2 Program testing Testing is intended to show that a program does what it is
Testing, Debugging, and Verification
Testing, Debugging, and Verification Testing, Part II Moa Johansson 10 November 2014 TDV: Testing /GU 141110 1 / 42 Admin Make sure you are registered for the course. Otherwise your marks cannot be recorded.
How Safe does my Code Need to be? Shawn A. Prestridge, Senior Field Applications Engineer
How Safe does my Code Need to be? Shawn A. Prestridge, Senior Field Applications Engineer Agendum What the benefits of Functional Safety are What the most popular safety certifications are Why you should
P1 P2 P3. Home (p) 1. Diff (p) 2. Invalidation (p) 3. Page Request (p) 4. Page Response (p)
ËÓØÛÖ ØÖÙØ ËÖ ÅÑÓÖÝ ÓÚÖ ÎÖØÙÐ ÁÒØÖ ÖØØÙÖ ÁÑÔÐÑÒØØÓÒ Ò ÈÖÓÖÑÒ ÅÙÖÐÖÒ ÊÒÖÒ Ò ÄÚÙ ÁØÓ ÔÖØÑÒØ Ó ÓÑÔÙØÖ ËÒ ÊÙØÖ ÍÒÚÖ ØÝ È ØÛÝ ÆÂ ¼¹¼½ ÑÙÖÐÖ ØÓ ºÖÙØÖ ºÙ ØÖØ ÁÒ Ø ÔÔÖ Û Ö Ò ÑÔÐÑÒØØÓÒ Ó ÓØÛÖ ØÖÙØ ËÖ ÅÑÓÖÝ Ëŵ
Automated Repair of Binary and Assembly Programs for Cooperating Embedded Devices
Automated Repair of Binary and Assembly Programs for Cooperating Embedded Devices Eric Schulte 1 Jonathan DiLorenzo 2 Westley Weimer 2 Stephanie Forrest 1 1 Department of Computer Science University of
CHAPTER 1 INTRODUCTION
1 CHAPTER 1 INTRODUCTION 1.1 Overview Software testing is a verification process in which an application of the software or the program meets the business requirements and technology that have dominated
Parallel Computing. Shared memory parallel programming with OpenMP
Parallel Computing Shared memory parallel programming with OpenMP Thorsten Grahs, 27.04.2015 Table of contents Introduction Directives Scope of data Synchronization 27.04.2015 Thorsten Grahs Parallel Computing
ISTQB Certified Tester. Foundation Level. Sample Exam 1
ISTQB Certified Tester Foundation Level Version 2015 American Copyright Notice This document may be copied in its entirety, or extracts made, if the source is acknowledged. #1 When test cases are designed
C++ for Safety-Critical Systems. DI Günter Obiltschnig Applied Informatics Software Engineering GmbH guenter.obiltschnig@appinf.
C++ for Safety-Critical Systems DI Günter Obiltschnig Applied Informatics Software Engineering GmbH [email protected] A life-critical system or safety-critical system is a system whose failure
/* File: blkcopy.c. size_t n
13.1. BLOCK INPUT/OUTPUT 505 /* File: blkcopy.c The program uses block I/O to copy a file. */ #include main() { signed char buf[100] const void *ptr = (void *) buf FILE *input, *output size_t
Instrumentation Software Profiling
Instrumentation Software Profiling Software Profiling Instrumentation of a program so that data related to runtime performance (e.g execution time, memory usage) is gathered for one or more pieces of the
Lecture 3. Optimising OpenCL performance
Lecture 3 Optimising OpenCL performance Based on material by Benedict Gaster and Lee Howes (AMD), Tim Mattson (Intel) and several others. - Page 1 Agenda Heterogeneous computing and the origins of OpenCL
Software Testing. Definition: Testing is a process of executing a program with data, with the sole intention of finding errors in the program.
Software Testing Definition: Testing is a process of executing a program with data, with the sole intention of finding errors in the program. Testing can only reveal the presence of errors and not the
Channel Access Client Programming. Andrew Johnson Computer Scientist, AES-SSG
Channel Access Client Programming Andrew Johnson Computer Scientist, AES-SSG Channel Access The main programming interface for writing Channel Access clients is the library that comes with EPICS base Written
Module 10. Coding and Testing. Version 2 CSE IIT, Kharagpur
Module 10 Coding and Testing Lesson 26 Debugging, Integration and System Testing Specific Instructional Objectives At the end of this lesson the student would be able to: Explain why debugging is needed.
CISC 181 Project 3 Designing Classes for Bank Accounts
CISC 181 Project 3 Designing Classes for Bank Accounts Code Due: On or before 12 Midnight, Monday, Dec 8; hardcopy due at beginning of lecture, Tues, Dec 9 What You Need to Know This project is based on
Format string exploitation on windows Using Immunity Debugger / Python. By Abysssec Inc WwW.Abysssec.Com
Format string exploitation on windows Using Immunity Debugger / Python By Abysssec Inc WwW.Abysssec.Com For real beneficiary this post you should have few assembly knowledge and you should know about classic
CS Standards Crosswalk: CSTA K-12 Computer Science Standards and Oracle Java Programming (2014)
CS Standards Crosswalk: CSTA K-12 Computer Science Standards and Oracle Java Programming (2014) CSTA Website Oracle Website Oracle Contact http://csta.acm.org/curriculum/sub/k12standards.html https://academy.oracle.com/oa-web-introcs-curriculum.html
Basic Java Constructs and Data Types Nuts and Bolts. Looking into Specific Differences and Enhancements in Java compared to C
Basic Java Constructs and Data Types Nuts and Bolts Looking into Specific Differences and Enhancements in Java compared to C 1 Contents Hello World Program Statements Explained Java Program Structure in
Software Vulnerabilities
Software Vulnerabilities -- stack overflow Code based security Code based security discusses typical vulnerabilities made by programmers that can be exploited by miscreants Implementing safe software in
Software Engineering. Software Processes. Based on Software Engineering, 7 th Edition by Ian Sommerville
Software Engineering Software Processes Based on Software Engineering, 7 th Edition by Ian Sommerville Objectives To introduce software process models To describe three generic process models and when
Appendix M INFORMATION TECHNOLOGY (IT) YOUTH APPRENTICESHIP
Appendix M INFORMATION TECHNOLOGY (IT) YOUTH APPRENTICESHIP PROGRAMMING & SOFTWARE DEVELOPMENT AND INFORMATION SUPPORT & SERVICES PATHWAY SOFTWARE UNIT UNIT 5 Programming & and Support & s: (Unit 5) PAGE
Improving Knowledge-Based System Performance by Reordering Rule Sequences
Improving Knowledge-Based System Performance by Reordering Rule Sequences Neli P. Zlatareva Department of Computer Science Central Connecticut State University 1615 Stanley Street New Britain, CT 06050
CSCI110: Examination information.
CSCI110: Examination information. The exam for CSCI110 will consist of short answer questions. Most of them will require a couple of sentences of explanation of a concept covered in lectures or practical
Scientific Method for Kids Scientific Method Steps Made Simple
Scientific Method for Kids Scientific Method Steps Made Simple Scientific language is often needed to explain natural phenomena as accurately as possible. Unfortunately, this can also complicate the process
Verification and Validation of Software Components and Component Based Software Systems
Chapter 5 29 Verification and Validation of Software Components and Component Based Christina Wallin Industrial Information Technology Software Engineering Processes ABB Corporate Research [email protected]
Transparent Monitoring of a Process Self in a Virtual Environment
Transparent Monitoring of a Process Self in a Virtual Environment PhD Lunchtime Seminar Università di Pisa 24 Giugno 2008 Outline Background Process Self Attacks Against the Self Dynamic and Static Analysis
An Incomplete C++ Primer. University of Wyoming MA 5310
An Incomplete C++ Primer University of Wyoming MA 5310 Professor Craig C. Douglas http://www.mgnet.org/~douglas/classes/na-sc/notes/c++primer.pdf C++ is a legacy programming language, as is other languages
Title: Bugger The Debugger - Pre Interaction Debugger Code Execution
White Paper Title: Bugger The Debugger Pre Interaction Debugger Code Execution Prepared by: Brett Moore Network Intrusion Specialist, CTO SecurityAssessment.com Date: April 2005 Abstract The use of debuggers
Session 2: MUST. Correctness Checking
Center for Information Services and High Performance Computing (ZIH) Session 2: MUST Correctness Checking Dr. Matthias S. Müller (RWTH Aachen University) Tobias Hilbrich (Technische Universität Dresden)
CFSD 21 ST CENTURY SKILL RUBRIC CRITICAL & CREATIVE THINKING
Critical and creative thinking (higher order thinking) refer to a set of cognitive skills or strategies that increases the probability of a desired outcome. In an information- rich society, the quality
CS1010 Programming Methodology A beginning in problem solving in Computer Science. Aaron Tan http://www.comp.nus.edu.sg/~cs1010/ 20 July 2015
CS1010 Programming Methodology A beginning in problem solving in Computer Science Aaron Tan http://www.comp.nus.edu.sg/~cs1010/ 20 July 2015 Announcements This document is available on the CS1010 website
C++ Programming Language
C++ Programming Language Lecturer: Yuri Nefedov 7th and 8th semesters Lectures: 34 hours (7th semester); 32 hours (8th semester). Seminars: 34 hours (7th semester); 32 hours (8th semester). Course abstract
How Compilers Work. by Walter Bright. Digital Mars
How Compilers Work by Walter Bright Digital Mars Compilers I've Built D programming language C++ C Javascript Java A.B.E.L Compiler Compilers Regex Lex Yacc Spirit Do only the easiest part Not very customizable
E10: Controlled Experiments
E10: Controlled Experiments Quantitative, empirical method Used to identify the cause of a situation or set of events X is responsible for Y Directly manipulate and control variables Correlation does not
Debugging Prolog Programs. Contents The basic Prolog debugger Tracing program execution Spying on problem predicates
Debugging Prolog Programs Prof. Geraint A. Wiggins Centre for Cognition, Computation and Culture Goldsmiths College, University of London Contents The basic Prolog debugger Tracing program execution Spying
Object-Oriented Software Engineering THE TOOLS OF THE TRADE CHAPTER 5. Stephen R. Schach [email protected]. 5.1 Stepwise Refinement.
Slide 5.1 CHAPTER 5 Slide 5.2 Object-Oriented Software Engineering THE TOOLS OF THE TRADE WCB/McGraw-Hill, 2008 Stephen R. Schach [email protected] Overview Slide 5.3 5.1 Stepwise Refinement Slide
Software Quality Exercise 2
Software Quality Exercise 2 Testing and Debugging 1 Information 1.1 Dates Release: 12.03.2012 12.15pm Deadline: 19.03.2012 12.15pm Discussion: 26.03.2012 1.2 Formalities Please submit your solution as
lundi 1 octobre 2012 In a set of N elements, by picking at random N elements, we have with high probability a collision two elements are equal
Symmetric Crypto Pierre-Alain Fouque Birthday Paradox In a set of N elements, by picking at random N elements, we have with high probability a collision two elements are equal N=365, about 23 people are
Testing Metrics. Introduction
Introduction Why Measure? What to Measure? It is often said that if something cannot be measured, it cannot be managed or improved. There is immense value in measurement, but you should always make sure
CMYK 0/100/100/20 66/54/42/17 34/21/10/0 Why is R slow? How to run R programs faster? Tomas Kalibera
CMYK 0/100/100/20 66/54/42/17 34/21/10/0 Why is R slow? How to run R programs faster? Tomas Kalibera My Background Virtual machines, runtimes for programming languages Real-time Java Automatic memory management
Analysis and Implementation of Cluster Computing Using Linux Operating System
IOSR Journal of Computer Engineering (IOSRJCE) ISSN: 2278-0661 Volume 2, Issue 3 (July-Aug. 2012), PP 06-11 Analysis and Implementation of Cluster Computing Using Linux Operating System Zinnia Sultana
How to Design and Create Your Own Custom Ext Rep
Combinatorial Block Designs 2009-04-15 Outline Project Intro External Representation Design Database System Deployment System Overview Conclusions 1. Since the project is a specific application in Combinatorial
Paper Airplanes & Scientific Methods
Paper Airplanes 1 Name Paper Airplanes & Scientific Methods Scientific Inquiry refers to the many different ways in which scientists investigate the world. Scientific investigations are done to answer
Parallel Programming with MPI on the Odyssey Cluster
Parallel Programming with MPI on the Odyssey Cluster Plamen Krastev Office: Oxford 38, Room 204 Email: [email protected] FAS Research Computing Harvard University Objectives: To introduce you
You are to simulate the process by making a record of the balls chosen, in the sequence in which they are chosen. Typical output for a run would be:
Lecture 7 Picking Balls From an Urn The problem: An urn has n (n = 10) balls numbered from 0 to 9 A ball is selected at random, its' is number noted, it is set aside, and another ball is selected from
Provisioning algorithm for minimum throughput assurance service in VPNs using nonlinear programming
Provisioning algorithm for minimum throughput assurance service in VPNs using nonlinear programming Masayoshi Shimamura (masayo-s@isnaistjp) Guraduate School of Information Science, Nara Institute of Science
CPU Scheduling Outline
CPU Scheduling Outline What is scheduling in the OS? What are common scheduling criteria? How to evaluate scheduling algorithms? What are common scheduling algorithms? How is thread scheduling different
Introduction to C Unit Testing (CUnit) Brian Nielsen Arne Skou
Introduction to C Unit Testing (CUnit) Brian Nielsen Arne Skou {bnielsen ask}@cs.auc.dk Unit Testing Code that isn t tested doesn t work Code that isn t regression tested suffers from code rot (breaks
How To Write Software
1 Medical Device Software - Software Life Cycle Processes IEC 62304 2 Credits John F. Murray Software Compliance Expert U.S. Food and Drug Administration Marcie R. Williams Medical Device Fellow Ph.D.
Class : MAC 286. Data Structure. Research Paper on Sorting Algorithms
Name : Jariya Phongsai Class : MAC 286. Data Structure Research Paper on Sorting Algorithms Prof. Lawrence Muller Date : October 26, 2009 Introduction In computer science, a ing algorithm is an efficient
Get the Better of Memory Leaks with Valgrind Whitepaper
WHITE PAPER Get the Better of Memory Leaks with Valgrind Whitepaper Memory leaks can cause problems and bugs in software which can be hard to detect. In this article we will discuss techniques and tools
