Software Product Line Engineering Lab Prof. Dr. Ralf Hahn WS2015/2016. Lab SWPLE

Size: px
Start display at page:

Download "Software Product Line Engineering Lab Prof. Dr. Ralf Hahn WS2015/2016. Lab SWPLE"

Transcription

1 WS205/ SWPLE General remarks The practical part of the lecture on SWPLE consists of 6 dates. Each date is mandatory. The lab sessions will be done in groups of 2 students. We will look at different topics in the field of software product lines. You will find out how hard it is to identify and to extract variability from daily life objects or how to use known modeling techniques enhanced with variability. In the last sessions there will be a little programming task. In the end you will hopefully have a better understanding about the importance of variability in software product lines and also in normal projects. It is supposed that you have good knowledge about software engineering, project management and UML models. Preparation In general you should try to solve the exercise with your partner before the lab date. In the course there will be time to complete your results and to discuss the results with other groups. So you are prepared for the discussion in the whole group. Tools Tools for managing product lines are rather complex and very expensive. Furthermore it is the objective of the course to understand the principles of product lines and not to teach the usage of some specific tool. For that reason we do not use any special tool but only normal text editors, drawing tools or compilers. You can use either the PC in the lab or your private computer.

2 WS205/ Exercise : Analysis of a Case Study In this exercise you analyze a report on the successful adoption of a product line approach of the company HomeAway. Preparation: Read the report from the 2 th international Software Product Line Conference HomeAway s Transition to Software Product Line Practice: Engineering and Business Results in 60 Days which is available for download at Write down your answers to the questions below as preparation. Exercise: Discuss your results in the course in groups of 2 persons. Make sure you are done after one hour since the remaining time will be used for discussion in the whole group. General What does HomeAway offer? Who are their customers? What is the market of HomeAway? What is the market position? What Software is developed? Describe the foundation of HomeAway in a few words Before the change How did HomeAway develop its software? How many software products did they have? What variability occurred and how was it resolved? What was the first step in order to get a common solution? What did they use? Write down the definition of a product line. Compare HomeAway s mode of working to the definition of a product line. What aspect was not fulfilled? Draw a diagram that shows the development principle before the change (displaying products vs. time) 2

3 WS205/ The Change What parts of the development cycle crashed? What features pushed the current development approach to the edge? Who recognized that there is need for a change? What did they do in the first 30 days of the transition? What did they do in the second 30 days? What role did BigLever/Gears play? After the change How does HomeAway develop its software now? How many software products do they have? What effect did the change have on HomeAway s testing results? What effect did the change have on HomeAway s code maintenance? What about modeling, software architecture or documentation? Why was it possible to adopt a product line approach in 60 days at HomeAway? Think about the kind of software they have to provide. Imagine the following scenario: A customer is renting a house which is offered on several web sites. How is the booking stored and displayed? 3

4 WS205/ Exercise 2: Variability In this exercise you analyze a real life example for variability. You have to identify variation points and variants. Preparation Make yourself familiar with the train tickets below and think about the differences. Exercise a) At your train station you can go to the service desk and buy various tickets. They usually offer One way tickets for trips from A to B for a single person Return tickets for trips from A to B and from B to A for a single person Seat reservations as a kind of add-on to ordinary tickets Student tickets are valid for half a year for a certain region and local trains. In the train the student has to identify himself by a passport. Happy weekend tickets that allow up to 5 people to take local trains on the weekend Commuter tickets are valid for weeks or months for a certain region and local trains. In the train the commuter has to identify himself by a passport. Compare the tickets to each other and use the following 3 questions to narrow the variability down What does vary? Why does it vary? How does it vary? Write down your results (the What and How) in a table. Variation Points One Way Return Ticket Ticket Reservation only Student Ticket Happy weekend Commuter ticket 4

5 WS205/ b) It is planned to introduce new "E-tickets" that work as follows: You identify ( check-in ) yourself at a special terminal at the train station A (where you intend to enter a train). At train station B (where you are leaving your train) you will be registered and a check-out happens automatically. Later on you will be charged for your trip from A to B (your bank account is known). What variability or variant do you have to add to cover that kind of ticket? Think about what the train conductor will check in the train. c) What is the commonality that all these tickets share? Try to find a definition that also includes the new e-tickets. Discuss your result in the group. d) Imagine you have to implement the software that is used at the service desk. You are supposed to implement a kind of question-answer HMI for all the conventional tickets (no E-Ticket). Draw the questions and answers as a selection graph (not necessarily a tree) with variation points (questions) as nodes, variants (choices) as edges and tickets as leaves. Try to build a graph with minimal depth. Hint: Chose the questions from your table that separate the available choices into balanced groups (e.g. 50:50). There may be more than two choices at a node. 5

6 WS205/ Exercise 3: Textual Requirements and Variability In this exercise you analyze extracts from three user manuals explaining the use of similar car radios. You have to identify the variability points, variants and common parts. The result is written down as a common textual description a core asset. Preparation Make yourself familiar with the use case template below and try to solve a) and b). Exercise a) Read the user manuals which are shown on the next page. Analyze the text with respect to use cases contained. Draw a use case diagram that contains the use cases for all the 3 manuals at once (Please do not look for something too complicated it s rather simple). b) Fill in the use case description template for each use case (template see below). Feel free to modify the text but the functionality described in the manuals has to be preserved. Highlight variation points by enclosing it in < >. Use Case Name Primary Actor Further Actors -- Precondition Stakeh & Inter Success Guar. Minimal Guar. Trigger Basic Course (Main Success Scenario) Radio Listener Marketing usability Station tuned in none. 2. Alternative Course a: a: a2: c) Draw a variability diagram containing all variation points and variants encountered. Finally add a variation point <Radio> with the variants Bremen, Paris and London and connect the radios to their specific variants i.e. represent the radios as Packaged Variants. d) The following questions will be discussed by the whole group There are a lot of restrictions within the use cases (e.g. AF and PTY must be switched off for functionality ). What do you think about these? In the middle of Paris you find the following section << Down in short intervals (for FM only; AF must be switched off) Do you understand what is meant? How could this be expressed more obviously? 6

7 WS205/

8 WS205/ Exercise 4: Design and Variability In this exercise you analyze the class diagrams for two similar car radios. You have to identify the variability points, variants and common parts. The result is documented as a variability model and as an improved class diagram. Preparation Make yourself familiar with class diagrams in general and try to solve a) and b). Exercise a) Analyze the class diagram of the car radio CD Radio supporting CD and radio. What two common tricks did the architect use to handle well-known variability? (Please do not look for something too complicated it s rather simple). class CD Radio RadioGUI CD_GUI AmplifierGUI AudioSource..* AudioManager + register(audiosource*) + unregister(audiosource*) RadioControl CD_Control TunerDriv er CD_Driv er Tuner-RDS-3 CD-Driv e ST47 8

9 WS205/ b) Analyze the class diagram of the MP3-CD-Radio supporting CD, MP3 and radio. Compare it to the previous diagram and identify common parts and varying parts Highlight with different colors the product specific parts and parts that are (reasonable) core assets. Think carefully whether classes with same names are really the same! What about the drivers? Are they product specific or common? class MP3-CD Radio RadioGUI MP3_GUI CD_GUI AmplifierGUI AudioSource..* AudioManager + register(audiosource*) + unregister(audiosource*) RadioControl MP3_Control CD_Control TunerDriv er CD_Driv e_coordinator CD_Driv er Coordinates access to the "stupid" driver (which manages only one client). Dispatches events to more than one client. Tuner-RDS-3 CD-Driv e TR085 c) How could you model the drivers differently to get better core assets? d) Draw a variability diagram containing all variation points and variants encountered. Link the model to the classes of the diagrams. Make sure that the following information is covered: MP3 and CD support are optional, radio is mandatory CD drive ST47 does not support MP3 The CD_Drive_Coordinator is only needed if the same CD-drive is used for MP3 and CD The User Interface is always different (both radios have different designs) 9

10 WS205/ Exercise 5: Implementing Variability I In this exercise you implement simple mechanisms that support variability in C++. Preparation Make sure that you have a C++-Compiler on your computer and that you still know how to use it. Exercise Assume the following scenario. You are developing a product line for driver information systems. All such systems need an algorithm for the route calculation. There are three different algorithms that calculate a route: Passenger car, Small Truck and Big Truck. Depending on the kind of car that has to be supported you have to choose one out of the three algorithms. So you have the following variability model VP RouteCalc Algorithms V V V Passenger a) Implement a C++ Class CRouteCalc that provides an operation void CRouteCalc::calculate(void). Depending on the desired variant the function calculate() is supposed to display 0, or 2 times the string Passenger or Small Truck or Big Truck. Use the C++-Precompiler Commands to select the appropriate code: #define ABC 23 #ifdef ABC "Hello world!\n" #endif Write a separate file that contains your main()-function. Main() creates an instance of the class and calls calculate. Implement the variation point in such a way that the selection can be made without touching the code of the class CRouteCalc. Consider your code and answer the following questions. Small Truck Big Truck What parts of the code would be core assets? What parts are product specific? If you need the C++-Compiler only for this exercise have a look at Codeblocks. This is a small C++-package that comes with compiler and debugger. 0

11 WS205/ Imagine there were real algorithms instead of the simple loops returning the strings. Such algorithms will definitely contain common code. What would you have to do to avoid fragments of identical code at different locations in the code? Imagine you make a mistake when selecting the desired variant i.e. you chose two variants at once or none at all. What will happen? Imagine you need a 4th variant. How would you add it? Do you have to touch the core assets? What does this mean e.g. to testing? b) Implement the same variability by using a strategy pattern: DriverInfoSystem RouteStrategy* myrs DriverInfoSystem(RouteStrategy*) void newroute() RouteStrategy virtual void calculate() PassengerRouteStrategy void calculate() SmallTruckRouteStrategy void calculate() BigTruckRouteStrategy void calculate() Implement an abstract C++ Class RouteStrategy that provides an operation virtual void calculate(). Implement a C++ Class DriverInfoSystem that provides an operation void newroute() and a constructor DriverInformationSystem(RouteStrategy*) that gets the desired strategy (object) as parameter. newroute() calls the operation calculate() of the RouteStrategy-Object that comes with the constructor. Furthermore DriverInfoSystem needs an attribute RouteStrategy* myrs to realize the assoziation to the RouteStrategy. Implement the 3 different classes that are derived from RouteStrategy and implement the different calculate() operations. Depending on the RouteStrategy the function calculate() is supposed to return 0 times the string Passenger or Small Truck or Big Truck. Write a separate file that contains your main()-function. main() creates an object of DriverInformationSystem using the constructor with a specific strategy object as parameter (created by new). Then newroute() is called. Create a DriverInformationSystem object for each strategy. Hint: When compiling all strategies at once the header of the base class will be included multiply. To avoid the resulting errors wrap the content of the header file in read only once directives (#ifndef xxx #define xxx #endif). Consider your code and answer the following questions. What parts of the code would be core assets? What parts are product specific? Imagine there were real algorithms instead of the simple loop returning the strings. Such algorithms will definitely contain common code. What would you have to do to avoid fragments of identical code at different locations in the code. Can you make a mistake when selecting the desired variant i.e. chose two variants at once or none at all? What will happen? Do you have to touch the code of the class DriverInformationSystem to change the strategy that is used? Where are changes needed? Imagine you need a 4 th variant. How would you add it? Do you have to touch the core assets? What does this mean e.g. to testing?

12 WS205/ Exercise 6: Implementing Variability II In this exercise you apply the mechanism to support variability on an example from daily life. Please choose the mechanisms that are appropriate but as simple as possible. Warning: This exercise looks rather simple. But doing it in the expected way is not easy. Preparation Write the code for an English-only system. Exercise Assume the following scenario. You are developing the user interface for a product line of automated teller machines (ATMs). You are selling the ATM to different countries. In Germany the ATM is delivered with German as the default language. But the ATM also has to support English 2. In France the ATM is delivered with French as the default language. But the ATM also has to support German 3. In Great Britain the ATM is delivered with English as the default language. But the ATM also has to support German. In a menu you can change the language at runtime. In the beginning there is a short greeting sentence. a) For the exercise you have to implement a user interface that works like this: Setup-Info (debug comments in English) Greeting, choice and invalid choice in selected language Selection key in the selected language 2 Of course there would be more languages in real life. But 3 languages are sufficient to understand the mechanisms. 3 If you are not familiar with French or German feel free to choose other languages. 2

13 WS205/ Requirements: There are two out of 3 available languages included in the system (chosen from German, English and French). The code for the third language is NOT included 4. Additional languages can be inserted easily i.e. without touching the existing code. (This should work with adding some files and making a simple change in the mainfile.) The selection of the supported languages is supposed to be as simple as possible. In the main-file there is only primitive code, i.e. a few includes, settings and a constructor for a class displaying the user interface. Try to implement a good design following the usual design guidelines (e.g. separation of concerns). Consider your code and answer the following questions. What mechanisms did you use for the realization? Why? Describe how the languages are selected in your solution Can you make a mistake when selecting the desired variants i.e. chose three languages or only one? What will happen? What has to be done to add a new language that has to be supported? What does this mean e.g. to testing? Did you use a switch/case statement for the menu? Why (not)? What about a one fits all solution? Why is it not suitable even if there is sufficient file space for storing all language data? Think about the report from exercise. Imagine you are looking for a tool for your product line. What features would you expect? 4 Including the header-file is ok. Since the linker only includes binary files that are really used. 3

Have the students look at the editor on their computers. Refer to overhead projector as necessary.

Have the students look at the editor on their computers. Refer to overhead projector as necessary. Intro to Programming (Time 15 minutes) Open the programming tool of your choice: If you ve installed, DrRacket, double-click the application to launch it. If you are using the online-tool, click here to

More information

Understanding the U.S. Banking System

Understanding the U.S. Banking System Understanding the U.S. Banking System 45 minutes Objectives Participants will be able to: describe different types of banking accounts available discuss the meaning of key vocabulary related to banking

More information

Software Development 2

Software Development 2 Software Development 2 Course Map This module introduces some of the techniques programmers use to create applications and programs. Introduction Computer Principles and Components Software Development

More information

COMP-202: Foundations of Programming. Lecture 26: Review; Wrap-Up Jackie Cheung, Winter 2016

COMP-202: Foundations of Programming. Lecture 26: Review; Wrap-Up Jackie Cheung, Winter 2016 COMP-202: Foundations of Programming Lecture 26: Review; Wrap-Up Jackie Cheung, Winter 2016 Announcements Final is scheduled for Apr 21, 2pm 5pm GYM FIELD HOUSE Rows 1-21 Please submit course evaluations!

More information

CS112 Lecture: Defining Instantiable Classes

CS112 Lecture: Defining Instantiable Classes CS112 Lecture: Defining Instantiable Classes Last revised 2/3/05 Objectives: 1. To describe the process of defining an instantiable class 2. To discuss public and private visibility modifiers. Materials:

More information

CE221 Programming in C++ Part 1 Introduction

CE221 Programming in C++ Part 1 Introduction CE221 Programming in C++ Part 1 Introduction 06/10/2017 CE221 Part 1 1 Module Schedule There are two lectures (Monday 13.00-13.50 and Tuesday 11.00-11.50) each week in the autumn term, and a 2-hour lab

More information

CS112 Lecture: Defining Classes. 1. To describe the process of defining an instantiable class

CS112 Lecture: Defining Classes. 1. To describe the process of defining an instantiable class CS112 Lecture: Defining Classes Last revised 2/3/06 Objectives: 1. To describe the process of defining an instantiable class Materials: 1. BlueJ SavingsAccount example project 2. Handout of code for SavingsAccount

More information

CS211 Lecture: Modeling Dynamic Behaviors of Systems; Interaction Diagrams and Statecharts Diagrams in UML

CS211 Lecture: Modeling Dynamic Behaviors of Systems; Interaction Diagrams and Statecharts Diagrams in UML CS211 Lecture: Modeling Dynamic Behaviors of Systems; Interaction Diagrams and Statecharts Diagrams in UML Objectives: 1. To introduce the notion of dynamic analysis 2. To show how to create and read Sequence

More information

LECTURE 3 ADMINISTRATION SECTION -A

LECTURE 3 ADMINISTRATION SECTION -A LECTURE 3 SYSTEM PROGRAMMING & SYSTEM ADMINISTRATION SECTION -A INTRODUCTION Interpreters Compilers Text editors Debug monitors Programming environment INTERPRETERS An interpreter may be a program that

More information

Lab # 2. For today s lab:

Lab # 2. For today s lab: 1 ITI 1120 Lab # 2 Contributors: G. Arbez, M. Eid, D. Inkpen, A. Williams, D. Amyot 1 For today s lab: Go the course webpage Follow the links to the lab notes for Lab 2. Save all the java programs you

More information

Revising CS-M41. Oliver Kullmann Computer Science Department Swansea University. Linux Lab Swansea, December 13, 2011.

Revising CS-M41. Oliver Kullmann Computer Science Department Swansea University. Linux Lab Swansea, December 13, 2011. Computer Science Department Swansea University Linux Lab Swansea, December 13, 2011 How to use the revision lecture The purpose of this lecture (and the slides) is to emphasise the main topics of this

More information

C++ Style Guide. 1.0 General. 2.0 Visual Layout. 3.0 Indentation and Whitespace

C++ Style Guide. 1.0 General. 2.0 Visual Layout. 3.0 Indentation and Whitespace C++ Style Guide 1.0 General The purpose of the style guide is not to restrict your programming, but rather to establish a consistent format for your programs. This will help you debug and maintain your

More information

Midterms Save the Dates!

Midterms Save the Dates! University of British Columbia CPSC 111, Intro to Computation Alan J. Hu (Using the Scanner and String Classes) Anatomy of a Java Program Readings This Week s Reading: Ch 3.1-3.8 (Major conceptual jump

More information

Introduction to Programming

Introduction to Programming CHAPTER 1 Introduction to Programming Begin at the beginning, and go on till you come to the end: then stop. This method of telling a story is as good today as it was when the King of Hearts prescribed

More information

(0) introduction to the course. how to learn a programming language. (0) course structure

(0) introduction to the course. how to learn a programming language. (0) course structure topics: (0) introduction to the course (1) what is a computer? instructor: cis1.5 introduction to computing using c++ (robotics applications) spring 2008 lecture # I.1 introduction Prof Azhar, mqazhar@sci.brooklyn.cuny.edu

More information

Revising CS-M41. Oliver Kullmann Computer Science Department Swansea University. Robert Recorde room Swansea, December 13, 2013.

Revising CS-M41. Oliver Kullmann Computer Science Department Swansea University. Robert Recorde room Swansea, December 13, 2013. Computer Science Department Swansea University Robert Recorde room Swansea, December 13, 2013 How to use the revision lecture The purpose of this lecture (and the slides) is to emphasise the main topics

More information

Freecoms VoIP Mobile Community Telecom S. Ferrari, page n 1»

Freecoms VoIP Mobile Community Telecom S. Ferrari, page n 1» Freecoms VoIP Mobile Community Telecom S. Ferrari, page n 1» Multiservice Mobile VoIP Community Powerful multiservice package: Home and Mobile VoIP communication. Business and Private WEB Portal community

More information

C Review. MaxMSP Developers Workshop Summer 2009 CNMAT

C Review. MaxMSP Developers Workshop Summer 2009 CNMAT C Review MaxMSP Developers Workshop Summer 2009 CNMAT C Syntax Program control (loops, branches): Function calls Math: +, -, *, /, ++, -- Variables, types, structures, assignment Pointers and memory (***

More information

Exercises: Instructions and Advice

Exercises: Instructions and Advice Instructions Exercises: Instructions and Advice The exercises in this course are primarily practical programming tasks that are designed to help the student master the intellectual content of the subjects

More information

HOW TO USE CODE::BLOCKS IDE FOR COMPUTER PROGRAMMING LABORATORY SESSIONS

HOW TO USE CODE::BLOCKS IDE FOR COMPUTER PROGRAMMING LABORATORY SESSIONS HOW TO USE CODE::BLOCKS IDE FOR COMPUTER PROGRAMMING LABORATORY SESSIONS INTRODUCTION A program written in a computer language, such as C/C++, is turned into executable using special translator software.

More information

Lecture 1: An Introduction to Graph Theory

Lecture 1: An Introduction to Graph Theory Introduction to Graph Theory Instructor: Padraic Bartlett Lecture 1: An Introduction to Graph Theory Week 1 Mathcamp 2011 Mathematicians like to use graphs to describe lots of different things. Groups,

More information

Operating system. Hardware

Operating system. Hardware Chapter 1.2 System Software 1.2.(a) Operating Systems An operating system is a set of programs designed to run in the background on a computer system, giving an environment in which application software

More information

Excel Basics Fall 2016

Excel Basics Fall 2016 If you have never worked with Excel, it can be a little confusing at first. When you open Excel, you are faced with various toolbars and menus and a big, empty grid. So what do you do with it? The great

More information

Migration of Legacy Systems to Software Product Lines

Migration of Legacy Systems to Software Product Lines Model D Driven Development and Product Lines Migration of Legacy Systems to Software Product Lines Dr., pure-systems GmbH danilo.beuche@pure-systems.com Overview Introduction Starting a Software Product

More information

MARKING KEY The University of British Columbia MARKING KEY Computer Science 260 Midterm #1 Examination 12:30 noon, Tuesday, February 14, 2012

MARKING KEY The University of British Columbia MARKING KEY Computer Science 260 Midterm #1 Examination 12:30 noon, Tuesday, February 14, 2012 MARKING KEY The University of British Columbia MARKING KEY Computer Science 260 Midterm #1 Examination 12:30 noon, Tuesday, February 14, 2012 Instructor: K. S. Booth Time: 70 minutes (one hour ten minutes)

More information

Week 4 Tute/Lab Entity-Relationship (ER) Model

Week 4 Tute/Lab Entity-Relationship (ER) Model ISYS1055/1057 Database Concepts 2018 Semester 2 Week 4 Tute/Lab Entity-Relationship (ER) Model The objectives of this tute/lab session are: Learn about the entity-relationship model; Learn how to build

More information

COMP390 (Design &) Implementation

COMP390 (Design &) Implementation COMP390 (Design &) Implementation A rough guide Consisting of some ideas to assist the development of large and small projects in Computer Science (With thanks to Dave Shield) Design & Implementation What

More information

3D Graphics Programming Mira Costa High School - Class Syllabus,

3D Graphics Programming Mira Costa High School - Class Syllabus, 3D Graphics Programming Mira Costa High School - Class Syllabus, 2009-2010 INSTRUCTOR: Mr. M. Williams COURSE GOALS and OBJECTIVES: 1 Learn the fundamentals of the Java language including data types and

More information

An Overview of Visual Basic.NET: A History and a Demonstration

An Overview of Visual Basic.NET: A History and a Demonstration OVERVIEW o b j e c t i v e s This overview contains basic definitions and background information, including: A brief history of programming languages An introduction to the terminology used in object-oriented

More information

STUDENT LESSON A1 Introduction to Object-Oriented Programming (OOP)

STUDENT LESSON A1 Introduction to Object-Oriented Programming (OOP) STUDENT LESSON A1 Introduction to Object-Oriented Programming (OOP) Java Curriculum for AP Computer Science, Student Lesson A1 1 STUDENT LESSON A1 Introduction to Object-Oriented Programming (OOP) INTRODUCTION:

More information

Self-review Questions

Self-review Questions 7Class Relationships 106 Chapter 7: Class Relationships Self-review Questions 7.1 How is association between classes implemented? An association between two classes is realized as a link between instance

More information

DOWNLOAD PDF FUNDAMENTALS OF DATABASE SYSTEMS

DOWNLOAD PDF FUNDAMENTALS OF DATABASE SYSTEMS Chapter 1 : Elmasri & Navathe, Fundamentals of Database Systems, 7th Edition Pearson Our presentation stresses the fundamentals of database modeling and design, the languages and models provided by the

More information

6.001 Notes: Section 8.1

6.001 Notes: Section 8.1 6.001 Notes: Section 8.1 Slide 8.1.1 In this lecture we are going to introduce a new data type, specifically to deal with symbols. This may sound a bit odd, but if you step back, you may realize that everything

More information

AP Calculus. Slide 1 / 213 Slide 2 / 213. Slide 3 / 213. Slide 4 / 213. Slide 4 (Answer) / 213 Slide 5 / 213. Derivatives. Derivatives Exploration

AP Calculus. Slide 1 / 213 Slide 2 / 213. Slide 3 / 213. Slide 4 / 213. Slide 4 (Answer) / 213 Slide 5 / 213. Derivatives. Derivatives Exploration Slide 1 / 213 Slide 2 / 213 AP Calculus Derivatives 2015-11-03 www.njctl.org Slide 3 / 213 Table of Contents Slide 4 / 213 Rate of Change Slope of a Curve (Instantaneous ROC) Derivative Rules: Power, Constant,

More information

Testing is a very big and important topic when it comes to software development. Testing has a number of aspects that need to be considered.

Testing is a very big and important topic when it comes to software development. Testing has a number of aspects that need to be considered. Testing Testing is a very big and important topic when it comes to software development. Testing has a number of aspects that need to be considered. System stability is the system going to crash or not?

More information

Design First ITS Instructor Tool

Design First ITS Instructor Tool Design First ITS Instructor Tool The Instructor Tool allows instructors to enter problems into Design First ITS through a process that creates a solution for a textual problem description and allows for

More information

Exercise 6 - Addressing a Message

Exercise 6 - Addressing a Message Exercise 6 - Addressing a Message All e-mail messages have to include an address for an e-mail to be delivered, just as a normal letter has to have a house address. An e-mail address is made up of: a user

More information

What are the most likely declarations of "month" in the old and new versions of the program?

What are the most likely declarations of month in the old and new versions of the program? All multiple choice questions are equally weighted. You can generally assume that code shown in the questions is syntactically correct, unless something in the question or one of the answers suggests otherwise.

More information

COMP-202: Foundations of Programming. Lecture 26: Image Manipulation; Wrap-Up Jackie Cheung, Winter 2015

COMP-202: Foundations of Programming. Lecture 26: Image Manipulation; Wrap-Up Jackie Cheung, Winter 2015 COMP-202: Foundations of Programming Lecture 26: Image Manipulation; Wrap-Up Jackie Cheung, Winter 2015 Announcements Assignment 6 due Tue Apr 14 at 11:59pm Final is scheduled for Apr 29, 6pm 9pm Please

More information

Programming Abstractions

Programming Abstractions Programming Abstractions C S 1 0 6 B Cynthia Lee Topics du Jour: Make your own classes! Needed for Boggle assignment! We are starting to see a little bit in MarbleBoard assignment as well 2 Classes in

More information

Q &A on Entity Relationship Diagrams. What is the Point? 1 Q&A

Q &A on Entity Relationship Diagrams. What is the Point? 1 Q&A 1 Q&A Q &A on Entity Relationship Diagrams The objective of this lecture is to show you how to construct an Entity Relationship (ER) Diagram. We demonstrate these concepts through an example. To break

More information

A PROGRAM IS A SEQUENCE of instructions that a computer can execute to

A PROGRAM IS A SEQUENCE of instructions that a computer can execute to A PROGRAM IS A SEQUENCE of instructions that a computer can execute to perform some task. A simple enough idea, but for the computer to make any use of the instructions, they must be written in a form

More information

Introduction to C CMSC 104 Spring 2014, Section 02, Lecture 6 Jason Tang

Introduction to C CMSC 104 Spring 2014, Section 02, Lecture 6 Jason Tang Introduction to C CMSC 104 Spring 2014, Section 02, Lecture 6 Jason Tang Topics History of Programming Languages Compilation Process Anatomy of C CMSC 104 Coding Standards Machine Code In the beginning,

More information

Lesson 20: Four Interesting Transformations of Functions

Lesson 20: Four Interesting Transformations of Functions Student Outcomes Students apply their understanding of transformations of functions and their graphs to piecewise functions. Lesson Notes In Lessons 17 19 students study translations and scalings of functions

More information

CSCI-1200 Data Structures Spring 2018 Lecture 14 Associative Containers (Maps), Part 1 (and Problem Solving Too)

CSCI-1200 Data Structures Spring 2018 Lecture 14 Associative Containers (Maps), Part 1 (and Problem Solving Too) CSCI-1200 Data Structures Spring 2018 Lecture 14 Associative Containers (Maps), Part 1 (and Problem Solving Too) HW6 NOTE: Do not use the STL map or STL pair for HW6. (It s okay to use them for the contest.)

More information

CS246 Software Abstraction and Specification Final Examination

CS246 Software Abstraction and Specification Final Examination CS246 Software Abstraction and Specification ination Spring 2007 Date: 04-Aug-2007 Time: 4.00 6.30pm Permitted Aids: None 14 pages Student Name: UW Student ID: Instructions: (Read carefully before the

More information

GOALS [HTDP/2e Chapters 1 through 3.5]

GOALS [HTDP/2e Chapters 1 through 3.5] Lab 1 GOALS [HTDP/2e Chapters 1 through 3.5] This week's lab will help you to practice: Using Dr.Racket: Interactions vs. Definitions; Stepper; Error messages; Indentation Simple image functions; using

More information

SOLUTIONS GUIDE. I Don t Know What to or

SOLUTIONS GUIDE. I Don t Know What to  or SOLUTIONS GUIDE I Don t Know What to Email or How to Write My Email, Can I Have Some Ideas? We often hear from new students that one of their biggest challenges creating content for email campaigns. Not

More information

CS 200. Lecture 07. Excel Scripting. Miscellaneous Notes

CS 200. Lecture 07. Excel Scripting. Miscellaneous Notes CS 200 Lecture 07 1 Abbreviations aka Also Known As Miscellaneous Notes CWS Course Web Site (http://www.student.cs.uwaterloo.ca/~cs200) VBE Visual Basic Editor intra- a prefix meaning within thus intra-cellular

More information

Introduction to Linked Lists. Introduction to Recursion Search Algorithms CS 311 Data Structures and Algorithms

Introduction to Linked Lists. Introduction to Recursion Search Algorithms CS 311 Data Structures and Algorithms Introduction to Linked Lists Introduction to Recursion Search Algorithms CS 311 Data Structures and Algorithms Lecture Slides Friday, September 25, 2009 Glenn G. Chappell Department of Computer Science

More information

CS 132 Exam #1 - Study Suggestions

CS 132 Exam #1 - Study Suggestions CS 132 - Exam #1 Study Suggestions p. 1 * last modified: 2-16-05 CS 132 Exam #1 - Study Suggestions * The test covers through HW #3, the Week 5 Lab Exercise Exercise, and material through the 2-14-05 lecture/2-16-05

More information

ICOM 4015: Advanced Programming

ICOM 4015: Advanced Programming ICOM 4015: Advanced Programming Lecture 1 Reading: Chapter One: Introduction Chapter 1 Introduction Chapter Goals To understand the activity of programming To learn about the architecture of computers

More information

Outlook is easier to use than you might think; it also does a lot more than. Fundamental Features: How Did You Ever Do without Outlook?

Outlook is easier to use than you might think; it also does a lot more than. Fundamental Features: How Did You Ever Do without Outlook? 04 537598 Ch01.qxd 9/2/03 9:46 AM Page 11 Chapter 1 Fundamental Features: How Did You Ever Do without Outlook? In This Chapter Reading e-mail Answering e-mail Creating new e-mail Entering an appointment

More information

Guidelines for Writing C Code

Guidelines for Writing C Code Guidelines for Writing C Code Issue 01-bugfix Martin Becker Institute for Real-Time Computer Systems (RCS) Technische Universität München becker@rcs.ei.tum.de June 9, 2014 Contents 1 Introduction 1 2 Pragmatic

More information

Student Outcomes. Lesson Notes. Classwork. Discussion (4 minutes)

Student Outcomes. Lesson Notes. Classwork. Discussion (4 minutes) Student Outcomes Students write mathematical statements using symbols to represent numbers. Students know that written statements can be written as more than one correct mathematical sentence. Lesson Notes

More information

COMP 110 Project 1 Programming Project Warm-Up Exercise

COMP 110 Project 1 Programming Project Warm-Up Exercise COMP 110 Project 1 Programming Project Warm-Up Exercise Creating Java Source Files Over the semester, several text editors will be suggested for students to try out. Initially, I suggest you use JGrasp,

More information

15-323/ Spring 2019 Project 4. Real-Time Audio Processing Due: April 2 Last updated: 6 March 2019

15-323/ Spring 2019 Project 4. Real-Time Audio Processing Due: April 2 Last updated: 6 March 2019 15-323/15-623 Spring 2019 Project 4. Real-Time Audio Processing Due: April 2 Last updated: 6 March 2019 1 Overview In this project, you will create a program that performs real-time audio generation. There

More information

Introduction to Events

Introduction to Events Facilitation Guide Introduction to Events ( http://www.alice.org/resources/lessons/introduction-to-events/ ) Summary This guide is intended to guide the facilitator through the creation of events and using

More information

ProgressTestA Unit 5. Vocabulary. Grammar

ProgressTestA Unit 5. Vocabulary. Grammar ProgressTestA Unit Vocabulary 1 Completethesentenceswithappropriate words.thefirstlettersofthewordshavebeen given. a Can you believe it? She s getting married to a man she has met on a s networking site!

More information

Midterms Save the Dates!

Midterms Save the Dates! University of British Columbia CPSC 111, Intro to Computation Alan J. Hu Errors (Using the Scanner and String Classes) Anatomy of a Java Program Readings This Week s Reading: Ch 3.1-3.8 (Major conceptual

More information

Section 2. Sending s

Section 2. Sending  s Start IT (itq) Using E-mail Section 2 Sending E-mails Topics contained within this section: Composing E-mail Using Addressing Using Spell Checking Sending Messages Understanding Guidelines Outlook 2007

More information

Let them check their answers against a complete version of the worksheet or by listening to you reading it all out.

Let them check their answers against a complete version of the worksheet or by listening to you reading it all out. Starting and ending business communications jigsaw texts Instructions for teachers Photocopy and cut out one set of cards for each group of two or three students. If the students are likely to find the

More information

Initial Coding Guidelines

Initial Coding Guidelines Initial Coding Guidelines ITK 168 (Lim) This handout specifies coding guidelines for programs in ITK 168. You are expected to follow these guidelines precisely for all lecture programs, and for lab programs.

More information

Welcome to CS61A! Last modified: Thu Jan 23 03:58: CS61A: Lecture #1 1

Welcome to CS61A! Last modified: Thu Jan 23 03:58: CS61A: Lecture #1 1 Welcome to CS61A! This is a course about programming, which is the art and science of constructing artifacts ( programs ) that perform computations or interact with the physical world. To do this, we have

More information

Introduction. Key features and lab exercises to familiarize new users to the Visual environment

Introduction. Key features and lab exercises to familiarize new users to the Visual environment Introduction Key features and lab exercises to familiarize new users to the Visual environment January 1999 CONTENTS KEY FEATURES... 3 Statement Completion Options 3 Auto List Members 3 Auto Type Info

More information

Project 5 - The Meta-Circular Evaluator

Project 5 - The Meta-Circular Evaluator MASSACHVSETTS INSTITVTE OF TECHNOLOGY Department of Electrical Engineering and Computer Science 6.001 Structure and Interpretation of Computer Programs Spring Semester, 2005 Project 5 - The Meta-Circular

More information

6.S189 Homework 1. What to turn in. Exercise 1.1 Installing Python. Exercise 1.2 Hello, world!

6.S189 Homework 1. What to turn in. Exercise 1.1 Installing Python. Exercise 1.2 Hello, world! 6.S189 Homework 1 http://web.mit.edu/6.189/www/materials.html What to turn in Do the warm-up problems for Days 1 & 2 on the online tutor. Complete the problems below on your computer and get a checkoff

More information

************ THIS PROGRAM IS NOT ELIGIBLE FOR LATE SUBMISSION. ALL SUBMISSIONS MUST BE RECEIVED BY THE DUE DATE/TIME INDICATED ABOVE HERE

************ THIS PROGRAM IS NOT ELIGIBLE FOR LATE SUBMISSION. ALL SUBMISSIONS MUST BE RECEIVED BY THE DUE DATE/TIME INDICATED ABOVE HERE Program 10: 40 points: Due Tuesday, May 12, 2015 : 11:59 p.m. ************ THIS PROGRAM IS NOT ELIGIBLE FOR LATE SUBMISSION. ALL SUBMISSIONS MUST BE RECEIVED BY THE DUE DATE/TIME INDICATED ABOVE HERE *************

More information

CS111: PROGRAMMING LANGUAGE II. Lecture 1: Introduction to classes

CS111: PROGRAMMING LANGUAGE II. Lecture 1: Introduction to classes CS111: PROGRAMMING LANGUAGE II Lecture 1: Introduction to classes Lecture Contents 2 What is a class? Encapsulation Class basics: Data Methods Objects Defining and using a class In Java 3 Java is an object-oriented

More information

CS 716: Introduction to communication networks. - 9 th class; 19 th Aug Instructor: Sridhar Iyer IIT Bombay

CS 716: Introduction to communication networks. - 9 th class; 19 th Aug Instructor: Sridhar Iyer IIT Bombay CS 716: Introduction to communication networks - 9 th class; 19 th Aug 2011 Instructor: Sridhar Iyer IIT Bombay Contention-based MAC: ALOHA Users transmit whenever they have data to send Collisions occur,

More information

St. Edmund Preparatory High School Brooklyn, NY

St. Edmund Preparatory High School Brooklyn, NY AP Computer Science Mr. A. Pinnavaia Summer Assignment St. Edmund Preparatory High School Name: I know it has been about 7 months since you last thought about programming. It s ok. I wouldn t want to think

More information

Lecture 1: Overview

Lecture 1: Overview 15-150 Lecture 1: Overview Lecture by Stefan Muller May 21, 2018 Welcome to 15-150! Today s lecture was an overview that showed the highlights of everything you re learning this semester, which also meant

More information

CPS122 Lecture: Detailed Design and Implementation

CPS122 Lecture: Detailed Design and Implementation CPS122 Lecture: Detailed Design and Implementation Objectives: Last revised March 3, 2017 1. To introduce the use of a complete UML class box to document the name, attributes, and methods of a class 2.

More information

Welcome to Lab! Feel free to get started until we start talking! The lab document is located on the course website:

Welcome to Lab! Feel free to get started until we start talking! The lab document is located on the course website: Welcome to Lab! Feel free to get started until we start talking! The lab document is located on the course website: https://users.wpi.edu/~sjarvis/ece2049_smj/ We will come around checking your pre-labs

More information

Make $400 Daily. With Only. 5 Minutes Of Work

Make $400 Daily. With Only. 5 Minutes Of Work Make $400 Daily With Only 5 Minutes Of Work Hello friends, I am not a professional copywriter, so you will find a lot of mistakes and lack of professional touch in this e-book. But I have not made this

More information

3.2 Pseudocode. Introduction. Definition. 1 Common pseudo code terms

3.2 Pseudocode. Introduction. Definition. 1 Common pseudo code terms 3.2 Introduction This section covers the use of pseudo code in the production of algorithms. Candidates should use standard computing text books to find out information on the features of programming languages

More information

Chapter 17 vector and Free Store. Bjarne Stroustrup

Chapter 17 vector and Free Store. Bjarne Stroustrup Chapter 17 vector and Free Store Bjarne Stroustrup www.stroustrup.com/programming Overview Vector revisited How are they implemented? Pointers and free store Allocation (new) Access Arrays and subscripting:

More information

Mutating Object State and Implementing Equality

Mutating Object State and Implementing Equality Mutating Object State and Implementing Equality 6.1 Mutating Object State Goals Today we touch the void... (sounds creepy right... see the movie, or read the book, to understand how scary the void can

More information

OOP- 5 Stacks Individual Assignment 35 Points

OOP- 5 Stacks Individual Assignment 35 Points OOP-5-Stacks-HW.docx CSCI 2320 Initials P a g e 1 If this lab is an Individual assignment, you must do all coded programs on your own. You may ask others for help on the language syntax, but you must organize

More information

Asset Keeper Pro - Import Assets. Import Assets

Asset Keeper Pro - Import Assets. Import Assets Import Assets Data can be imported into Asset Keeper Pro from either an Excel file or CSV file. The import option is located in the File menu in the Import / Export Assets submenu. Before importing you

More information

LAB: WHILE LOOPS IN C++

LAB: WHILE LOOPS IN C++ LAB: WHILE LOOPS IN C++ MODULE 2 JEFFREY A. STONE and TRICIA K. CLARK COPYRIGHT 2014 VERSION 4.0 PALMS MODULE 2 LAB: WHILE LOOPS IN C++ 2 Introduction This lab will provide students with an introduction

More information

Concur Online Booking Tool: Tips and Tricks. Table of Contents: Viewing Past and Upcoming Trips Cloning Trips and Creating Templates

Concur Online Booking Tool: Tips and Tricks. Table of Contents: Viewing Past and Upcoming Trips Cloning Trips and Creating Templates Travel Office: Concur Resource Guides Concur Online Booking Tool: Tips and Tricks This document will highlight some tips and tricks users may take advantage of within the Concur Online Booking Tool. This

More information

Welcome to Lab! You do not need to keep the same partner from last lab. We will come around checking your prelabs after we introduce the lab

Welcome to Lab! You do not need to keep the same partner from last lab. We will come around checking your prelabs after we introduce the lab Welcome to Lab! Feel free to get started until we start talking! The lab document is located on the course website: http://users.wpi.edu/~ndemarinis/ece2049/ You do not need to keep the same partner from

More information

CSCI-1200 Data Structures Fall 2009 Lecture 25 Concurrency & Asynchronous Computing

CSCI-1200 Data Structures Fall 2009 Lecture 25 Concurrency & Asynchronous Computing CSCI-1200 Data Structures Fall 2009 Lecture 25 Concurrency & Asynchronous Computing Final Exam General Information The final exam will be held Monday, Dec 21st, 2009, 11:30am-2:30pm, DCC 308. A makeup

More information

Mobile Computing Professor Pushpedra Singh Indraprasth Institute of Information Technology Delhi Andriod Development Lecture 09

Mobile Computing Professor Pushpedra Singh Indraprasth Institute of Information Technology Delhi Andriod Development Lecture 09 Mobile Computing Professor Pushpedra Singh Indraprasth Institute of Information Technology Delhi Andriod Development Lecture 09 Hello, today we will create another application called a math quiz. This

More information

OBJECT ORIENTED SYSTEM DEVELOPMENT Software Development Dynamic System Development Information system solution Steps in System Development Analysis

OBJECT ORIENTED SYSTEM DEVELOPMENT Software Development Dynamic System Development Information system solution Steps in System Development Analysis UNIT I INTRODUCTION OBJECT ORIENTED SYSTEM DEVELOPMENT Software Development Dynamic System Development Information system solution Steps in System Development Analysis Design Implementation Testing Maintenance

More information

communications and software

communications and software 1 Computer systems, communications and software 1.1 Components of a computer system and modes of use A computer system is made up of hardware and flow of data and information. The storage device is both

More information

Boot Camp. Dave Eckhardt Bruce Maggs

Boot Camp. Dave Eckhardt Bruce Maggs Boot Camp Dave Eckhardt de0u@andrew.cmu.edu Bruce Maggs bmm@cs.cmu.edu 1 This Is a Hard Class Traditional hazards 410 letter grade one lower than other classes All other classes this semester: one grade

More information

Project 5 - The Meta-Circular Evaluator

Project 5 - The Meta-Circular Evaluator MASSACHVSETTS INSTITVTE OF TECHNOLOGY Department of Electrical Engineering and Computer Science 6.001 Structure and Interpretation of Computer Programs Fall Semester, 2005 Project 5 - The Meta-Circular

More information

About this exam review

About this exam review Final Exam Review About this exam review I ve prepared an outline of the material covered in class May not be totally complete! Exam may ask about things that were covered in class but not in this review

More information

gsysc Visualization of SystemC-Projects (Extended abstract)

gsysc Visualization of SystemC-Projects (Extended abstract) gsysc Visualization of SystemC-Projects (Extended abstract) Christian J. Eibl Institute for Computer Engineering University of Lübeck February 16, 2005 Abstract SystemC is a C++ library for modeling of

More information

Motivation was to facilitate development of systems software, especially OS development.

Motivation was to facilitate development of systems software, especially OS development. A History Lesson C Basics 1 Development of language by Dennis Ritchie at Bell Labs culminated in the C language in 1972. Motivation was to facilitate development of systems software, especially OS development.

More information

Programming in the Real World. Dr. Baldassano Yu s Elite Education

Programming in the Real World. Dr. Baldassano Yu s Elite Education Programming in the Real World Dr. Baldassano chrisb@princeton.edu Yu s Elite Education Our programs are getting bigger! Our game was already over 100 lines long - most programs are worked on by teams of

More information

Introduction Data Structures

Introduction Data Structures Introduction Data Structures This course Lecturer: Nick Smallbone (me) nicsma@chalmers.se, room 5469 Assistant: Alexander Sjösten sjosten@chalmers.se Lectures usually twice a week: Wednesdays 13-15, room

More information

3 Getting Started with Objects

3 Getting Started with Objects 3 Getting Started with Objects If you are an experienced IDE user, you may be able to do this tutorial without having done the previous tutorial, Getting Started. However, at some point you should read

More information

Overview of C++ Support in TI Compiler Tools July 2008

Overview of C++ Support in TI Compiler Tools July 2008 Overview of C++ Support in TI Compiler Tools July 2008 1 Table of Contents 1 Table of Contents... 1 2 Introduction... 1 3 Support for the Language... 1 4 Embedded C++... 1 5 Some Comments on Efficiency...

More information

Computer Principles and Components 1

Computer Principles and Components 1 Computer Principles and Components 1 Course Map This module provides an overview of the hardware and software environment being used throughout the course. Introduction Computer Principles and Components

More information

CIS 505: Software Systems

CIS 505: Software Systems CIS 505: Software Systems Fall 2017 Assignment 3: Chat server Due on November 3rd, 2017, at 10:00pm EDT 1 Overview For this assignment, you will implement a simple replicated chat server that uses multicast

More information

Getting Started Guide

Getting Started Guide Getting Started Guide Logging in to Concur T&E Access Concur Travel & Expense Navigate to: https://www.concursolutions.com Enter your User Name and Password. Click Login. Retrieve or Change a Password

More information

Type Checking and Type Equality

Type Checking and Type Equality Type Checking and Type Equality Type systems are the biggest point of variation across programming languages. Even languages that look similar are often greatly different when it comes to their type systems.

More information