CompSci 230 Software Construction Course Revision: Themes A, B & C S1 2015.

Slides:



Advertisements
Similar presentations
Object-Oriented Design – Key Concepts Version 1.1 of : added learning objectives CompSci 230 Software Construction.
Advertisements

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 12Slide 1 Software Design l Objectives To explain how a software design may be represented.
OBJECT ORIENTED PROGRAMMING M Taimoor Khan
Slides 4/22 COP Topics Final Exam Review Final Exam The final exam is Friday, April 29 th at 10:00 AM in the usual room No notes, books, calculators,
ITEC200 – Week03 Inheritance and Class Hierarchies.
Introduction To System Analysis and Design
Liang,Introduction to Java Programming,revised by Dai-kaiyu 1 Chapter 10 Object-Oriented Modeling.
Programming Language Paradigms: summary. Object-oriented programming Objects are the fundamental building blocks of a program. Interaction is structured.
Fall 2007CS 225 Introduction to Software Design Chapter 1.
Object Oriented System Development with VB .NET
Introduction to Software Design Chapter 1. Chapter 1: Introduction to Software Design2 Chapter Objectives To become familiar with the software challenge.
Aalborg Media Lab 23-Jun-15 Inheritance Lecture 10 Chapter 8.
Object-oriented design CS 345 September 20,2002. Unavoidable Complexity Many software systems are very complex: –Many developers –Ongoing lifespan –Large.
Course Instructor: Aisha Azeem
Introduction to Software Design Chapter 1. Chapter 1: Introduction to Software Design2 Chapter Objectives To become familiar with the software challenge.
CSCI-383 Object-Oriented Programming & Design Lecture 15.
Lecture 5: Object-Oriented Design, Part 2 CompSci 230 Software Construction.
Introduction To System Analysis and design
CS 8532: Adv. Software Eng. – Spring 2007 Dr. Hisham Haddad Tuesday Class will start momentarily. Please Stand By … CS 8532: Advanced Software.
Copyright © 2002, Systems and Computer Engineering, Carleton University Intro.ppt * Object-Oriented Software Development Unit 1 Course.
Lecture 1 Introduction to Software Construction
Object Oriented Programming CEN 221. Course Description Classes, objects, inheritance, polymorphism, graphical user interfaces, event handling, exception.
Advanced Java New York University School of Continuing and Professional Studies.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Chapter 12 Object-Oriented.
Design Patterns OOD. Course topics Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples) Design Principles.
JAVA Introduction ● One of the main JAVA design goal is reducing complexity for programmer – Development time is half or less comparing to equivalent C++
An analysis of exam results in the Object-Oriented Programming course at „Politehnica” University of Timisoara Ioan Jurca.
Java Implementation: Part 3 Software Construction Lecture 8.
Sadegh Aliakbary Sharif University of Technology Fall 2012.
Introduction to Software Design Chapter 1. Chapter Objectives  To become familiar with the software challenge and the software life cycle  To understand.
Introduction To System Analysis and Design
CSC 211 Introduction to Design Patterns. Intro to the course Syllabus About the textbook – Read the introduction and Chapter 1 Good attendance is the.
Software Engineering EKT 420 MOHAMED ELSHAIKH KKF 8A – room 4.
Objected Oriented Programming & Design JAVA Shishir Gupta (704) (704)
Object-Oriented Modeling Chapter 10 CSCI CSCI 1302 – Object-Oriented Modeling2 Outline The Software Development Process Discovering Relationships.
Object Oriented Programming Principles Lecturer: Kalamullah Ramli Electrical Engineering Dept. University of Indonesia Session-3.
More on Hierarchies 1. When an object of a subclass is instantiated, is memory allocated for only the data members of the subclass or also for the members.
1 CSC 222: Object-Oriented Programming Spring 2013 Course goals:  To know and use basic Java programming constructs for object- oriented problem solving.
COMPSCI 230 S1C 2011 Software Design and Construction 2011.
Design.ppt1 Top-down designs: 1. Define the Problem IPO 2. Identify tasks, Modularize 3. Use structure chart 4. Pseudocode for Mainline 5. Construct pseudocode.
Dale Roberts Object Oriented Programming using Java - Introduction Dale Roberts, Lecturer Computer Science, IUPUI Department.
Types in programming languages1 What are types, and why do we need them?
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Chapter 6 – Architectural Design Lecture 1 1Chapter 6 Architectural design.
1 6th Workshop "SEERE", Ravda, September 2006 OOJava course materials – what happened during last year? M. Ivanovic, K. Bothe.
Lecture 10 Concepts of Programming Languages Arne Kutzner Hanyang University / Seoul Korea.
1 OO Analysis & Design - Introduction to main ideas in OO Analysis & design - Practical experience in applying ideas.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Chapter 11 Object-Oriented.
Boris Milašinović Faculty of Electrical Engineering and Computing University of Zagreb, Croatia 15th Workshop on "Software Engineering Education and Reverse.
1 Here are some quotations to get an overview of the kinds of issues of interest.
1 CSE Programming in C++. 2 Overview Sign roster list Syllabus and Course Policies Introduction to C++ About Lab 1 Fill Questionnaire.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
Object-Oriented Design Concepts University of Sunderland.
CSIS 4850: CS Senior Project – Spring 2009 CSIS 4850: Senior Project Spring 2009 Object-Oriented Design.
From the customer’s perspective the SRS is: How smart people are going to solve the problem that was stated in the System Spec. A “contract”, more or less.
Singleton Academy, Pune. Course syllabus Singleton Academy Pune – Course Syllabus1.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (2/2)
CSCE 240 – Intro to Software Engineering Lecture 3.
ISBN Chapter 12 Support for Object-Oriented Programming.
CSC 222: Object-Oriented Programming
CompSci 230 Software Construction
CSC 222: Object-Oriented Programming
Object-Orientated Programming
OBJECT ORIENTED PROGRAMMING overview
CompSci 230 Software Construction
EECE 310 Software Engineering
CS 8532: Advanced Software Engineering
Review of Previous Lesson
Lecture 1 Introduction to Software Construction
Presentation transcript:

CompSci 230 Software Construction Course Revision: Themes A, B & C S1 2015

Overview  In Stage 1, you learned how to write programs to solve small problems.  In CompSci 230, we teach programming “in the large”.  Large software systems have many stakeholders.  What will its users want?  Can we describe user requirements, accurately and succinctly?  Large software systems are very complex.  Can we describe the design of a complex software system, accurately and succinctly?  Can we be sure that a complex system will do what it is designed to do, and that it will not do anything unintended?  In CompSci 230, you will learn some incomplete answers to these difficult questions.  I will also attempt to teach you how to “learn how to learn” the technical skills you will need in the future – as a competent computer professional. 2CompSci 230

Syllabus  Four Themes:  A. The object-oriented programming paradigm  Object-orientation, object-oriented programming concepts and programming language constructs – because, for many important problems, OO design is a convenient way to express the problem and its solution in software.  B. Frameworks  Inversion of control, AWT/Swing and JUnit – because many important “sub- problems” have already been solved: these solutions should be re-used!  C. Software quality  Testing, inspection, documentation – because large teams are designing, implementing, debugging, maintaining, revising, and supporting complex software.  D. Application-level concurrent programming  Multithreading concepts, language primitives and abstractions – because even our laptops have multiple CPUs. Dual-core smartphones are now available... 3CompSci 230

Theme A: The OO Design Paradigm  Object-orientation, object-oriented programming concepts and programming language constructs – because, for many important problems, OO design is a convenient way to express the problem and its solution in software.  Topics (by lecture slides):  01: Intro to Java  02: Hello World!  03: Intro to OOD  04: Use cases  05: OOD concepts: abstraction, …  06-08: Java Implementation CompSci 2304

Software Construction  Review (or learn for the first time?)  What is Object-Oriented Programming?  Related objects in classes. State + behaviour. Instantiation. Comparison with procedural and data- architectural styles of programming.  Classes & Objects  Message passing by calls, returns, and exceptions  Variables & Methods (for instances and classes)  Introduction to OO Design  A process: 1. determining what the stakeholders require, 2. designing a set of classes with objects which will meet these requirements, 3. implementing, and 4. delivering.  You learned two new languages:  Use-case diagram, for requirements  Class diagram, for design  Object diagram, to explain “what’s happening” in an implementation  not emphasised, but may be very helpful for your understanding CompSci 2305

Use Case Diagrams  Learning goals for this unit:  Interpretative: Any student who passes CompSci 230 can accurately interpret the information presented in a use-case diagram or description.  Productive: Any student with a B or better in CompSci 230 can draw up an accurate set of use cases from an informal specification.  Creative: Excellent CompSci 230 students are able to apply their course-specific knowledge in novel situations. For example, they could discuss the strengths & weaknesses of use case analysis as a methodology for requirements capture.  Note: I cannot test a students performance on all topics, at all levels, in an hour.  The final exam has some questions that are focused at A-level, some at B-level, and some at C-level. I won’t reveal the levels at which topics are tested.  Some topics won’t be tested at all, but I won’t reveal which ones.  Such incomplete (and secret) coverage allows a limited range of quality-assurances e.g.  Any student who knows all important topics “at B level” will get a B.  Some B/C-level students will “get lucky” – they’ll also get a B.  Students who have only C-level knowledge will get a C.  It is impossible to write in a language if you can’t read it. You must be able to read & write in order to express novel thoughts. CompSci 2306

OOD & Class Diagrams  Abstraction:  The ability of a language (and a designer) to take a concept and create an abstract representation of that concept within a program  Information Hiding:  How well does this language, designer, and programmer hide an object’s internal implementation?  Polymorphism:  How does this language let us treat related objects in a similar fashion?  Inheritance:  The “is-a” relation: important for code reuse.  Composition, Aggregation, Association:  Types of “has-a” relations: ways to build complex classes from simpler ones. (I’m emphasising only the most general case: the “association”.) CompSci 2307

Java Implementation  Interfaces and Abstract Classes  Important in practice, but not emphasised this semester.  Java’s type system: Static & dynamic typing, conversions.  Very important in practice, rather difficult in theory.  Visibility  Important in practice, but not emphasised this semester.  Overriding, hiding (this is usually evil ;-), shadowing, overloading  Java syntax: super, this, final. (Static vs instance methods; name conflicts)  Type conversions  Enums  Java’s runtime system  A very “deep” topic. We skimmed over memory allocation.  Object identity, assignment, equality, copying,  Very important in practice, with a straightforward theory after you understand instantiation (which is moderately complex: object diagrams might help). CompSci 2308

Theme B: Frameworks  Inversion of control, AWT/Swing and JUnit – because many important “sub-problems” have already been solved: these solutions should be re- used!  Topics (by lecture):  09: Collections  10: Introduction to Swing  11: Applets and AWT  12: Swing and MVC  13: Custom widgets and drawing CompSci 2309

Collections  (Why use a framework? What is a framework?)  The Collection interface  Sub-interfaces:  List  Set  You know a little about Map ; there are others, but you haven’t used them  I don’t expect you to remember the details but you should know what operations “make sense” for the interfaces.  You should know how to implement a traversal using a for-loop (but we didn’t explore Iterators)  Implementations: ArrayList, LinkedList  Generic types, e.g. ArrayList CompSci 23010

Swing and AWT  Only a few concepts here:  windows, components, containers,  Model-View-Controller; Swing’s separable model-view.  I don’t expect you to implement a Swing app “from scratch”, but you should be able to interpret a simple code and modify it. CompSci 23011

Exam Format  30% short-answer:  Allow 45 minutes for this part.  70% defined response (multiple-choice, true-false).  About 55 questions, allow 60 minutes for this.  There is one correct answer.  If it seems ambiguous, please write a note on the overflow page. CompSci 23012

Best wishes, and please keep in touch!  I have enjoyed teaching this course.  I’d enjoy hearing from you in the future.  Please don’t hesitate to “volunteer yourself” to give a guest lecture to a future CompSci 230 class! CompSci 23013