Software Design 8.1 Compsci 108 l Object oriented design and programming of medium-sized projects in groups using modern tools and practices in meaningful.

Slides:



Advertisements
Similar presentations
Welcome to. Who am I? A better way to code Design Patterns ???  What are design patterns?  How many are there?  How do I use them?  When do I use.
Advertisements

A Brief Introduction to Test- Driven Development Shawn M. Jones.
ANU COMP2110 Software Design in 2003 Lecture 16Slide 1 Lecture 16: Introduction to design patterns 1What are they? 2Where do they come from? 3Why study.
Alan Kay (1940- ) Pioneer of Object Oriented programming Wrote the first OO language, Smalltalk Developed the prototypes for network workstations in 1970.
DESIGN PATTERNS OZGUR RAHMI DONMEZ.
Patterns Reusable solutions to common object-oriented programming problems When given a programming problem, re-use an existing solution. Gang of Four.
05/26/2004www.indyjug.net1 Indy Java User’s Group June Knowledge Services, Inc.
Design Patterns. What are design patterns? A general reusable solution to a commonly occurring problem. A description or template for how to solve a problem.
Marcelo Santos – OOAD-CDT309, Spring 2008, IDE-MdH 1 Object-Oriented Analysis and Design - CDT309 Period 4, Spring 2008 Design Patterns: someone has already.
1 An introduction to design patterns Based on material produced by John Vlissides and Douglas C. Schmidt.
1 Welcome to AI CS 3610, Artificial Intelligence Dr. Ben Schafer
CPS 108 : Spring What is Computer Science? What is it that distinguishes it from the separate subjects with which it is related? What is the linking.
Student view of SE study program at FER, Zagreb Ivan Belfinger Mentor: prof. dr. sc. Krešimir Fertalj Faculty of Electrical Engineering and Computing,
Software Waterfall Life Cycle Requirements Construction Design Testing Delivery and Installation Operations and Maintenance Concept Exploration Prototype.
Programming Languages Introduction. Overview Motivation Why study programming languages? Some key concepts.
MVC and MVP. References enter.html enter.html
樣式導向設計 (Pattern-Oriented Design) 課程簡介 Ku-Yaw Chang Assistant Professor, Department of Computer Science and Information Engineering.
Todd Snyder Development Team Lead Infragistics Experience Design Group.
CSSE 374: Introduction to Gang of Four Design Patterns
COMCOM omponent bject odel After this presentation, you will: Be Able To: Conceptual understanding of COM How it works, What it’s used for Decode Acronyms.
ISP666 MVC & Design Patterns. Outline Review Event Programming Model Model-View-Controller Revisit Simple Calculator Break Design Patterns Exercise.
January 12, Introduction to Design Patterns Tim Burke References: –Gamma, Erich, et. al. (AKA, The Gang of Four). Design Patterns: Elements of Reusable.
ANU COMP2110 Software Design in 2004 Lecture 15Slide 1 COMP2110 in 2004 Software Design Lecture 15: Software design patterns (2) 1What are design patterns?
Design Patterns in Java Chapter 1 Introduction Summary prepared by Kirk Scott 1.
Patterns in programming 1. What are patterns? “A design pattern is a general, reusable solution to a commonly occurring problem in software. A design.
Software Design 4.1 Tell, Don't Ask l Tell objects what you want them to do, do not ask questions about state, make a decision, then tell them what to.
Course Overview & Topics CSc 335: Object-Oriented Programming and Design © Rick Mercer 1.
Guide to Programming with Python Chapter One Getting Started: The Game Over Program.
MVC Design Pattern Web Developer at Crimshield, Inc Application Developer at IBM Present - Delta Developer at Tides.
DAAD project “Joint Course on OOP using Java” On Object Oriented modeling in Java (Why & How) Ana Madevska Bogdanova Institute of informatics Faculty of.
1-1 C Sc 335 Course Overview Object-Oriented Programming and Design Rick Mercer.
1 CSC 222: Object-Oriented Programming Spring 2013 Course goals:  To know and use basic Java programming constructs for object- oriented problem solving.
1 CSC 321: Data Structures Fall 2013 See online syllabus (also available through BlueLine2): Course goals:  To understand.
Model View Controller A Pattern that Many People Think They Understand, But Has A Couple Meanings.
Creative Commons Attribution- ShareAlike 2.5 License Sakai Programmer's Café Sakai Oxford Tetra ELF Workshop Welcome to the Sakai Oxford Tetra ELF Workshop.
Software Design 18.1 CPS 108 l Object oriented design and programming of medium-sized projects in groups using modern tools and practices in meaningful.
Software Design 14.1 CPS 108 l Object oriented design and programming of medium-sized projects in groups using modern tools and practices in meaningful.
Appreciating OO Design Principles & Patterns Dale Skrien Dept of Computer Science Colby College Waterville, ME 04901
Design Patterns. 1 Paradigm4 Concepts 9 Principles23 Patterns.
+ Summer Institute for Online Course Development Institute – Assessment Techniques Presentation by Nancy Harris Dept of Computer Science.
Software Design 1.1 CPS 108, Spring 2006 l Object oriented programming and design, we'll use Java and C++  Language independent concepts including design.
Creative Commons Attribution- ShareAlike 2.5 License Sakai Programmer's Café Sakai Oxford Tetra ELF Workshop Welcome to the Sakai Oxford Tetra ELF Workshop.
Course Introduction MIS 3501, Spring 2016 Jeremy Shafer Department of MIS Fox School of Business Temple University 1/12/2016.
CS 210 Proxy Pattern Nov 16 th, RMI – A quick review A simple, easy to understand tutorial is located here:
Session 30 Final Review. Final Details Wednesday, December 14 at 8 AM Wright 5 (same classroom) Final will be comprehensive Open book Open notes Test.
Five Minute Design Patterns Doug Marttila Forest and the Trees May 30, 2009 Template Factory Singleton Iterator Adapter Façade Observer Command Strategy.
Object- oriented Design Principles
Duke CPS CPS 108, Spring 1998 l Software Design and Implementation ä Object oriented programming and design ä good design helps do away with late.
Duke CPS Programming Heuristics l Identify the aspects of your application that vary and separate them from what stays the same ä Take what varies.
Software Design 17.1 Aside: ethics of software l What is intellectual property, why is it important?  what about FSF, GPL, copy-left, open source, … 
David Evans CS150: Computer Science University of Virginia Computer Science Lecture 22: Objectifying Objects.
CompSci 100 Prog Design and Analysis II October 19, 2010 Prof. Rodger CompSci 100, Fall
Design Patterns CSCE 315 – Programming Studio Spring 2013.
Course Introduction MIS 3501, Fall 2016 Jeremy Shafer Department of MIS Fox School of Business Temple University 8/30/2016.
CSC 222: Object-Oriented Programming
The Object-Oriented Thought Process Chapter 15
MPCS – Advanced java Programming
Design Patterns Lecture part 2.
Plan for the week Working in groups/teams, horrible bosses?
Course Introduction MIS 3501 Jeremy Shafer Department of MIS
Course Introduction MIS 3501 Jeremy Shafer Department of MIS
CSC 222: Object-Oriented Programming
Plan for today Refactoring and Design Patterns
How to be a Good Developer
object oriented Principles of software design
Course Introduction MIS 3501 Patrick Wasson Department of MIS
08/15/09 Design Patterns James Brucker.
Object Oriented Design Patterns - Creational Patterns
Chapter 8, Design Patterns Introduction
Modeling the Spread of a Virus in a Modern Environment
Presentation transcript:

Software Design 8.1 Compsci 108 l Object oriented design and programming of medium-sized projects in groups using modern tools and practices in meaningful ways ( written Spring, 2004 ) l High level OO concepts  XP: Extreme Programming: simplicity, refactor, grow code  Tell, don't ask: designing classes  Open/Closed: open to extension, closed to modification l Learn to manage time, improve coding methods, e.g., can you really code effectively at 3:00 am?

Software Design 8.2 Essential Design Patterns (by name) l MVC, aka Observer/Observable  Separate concerns, especially important for GUIs l Composite  Container is/contains JComponent: File/Directory l Factory  Separate creation from class, install new creators l Proxy/Adapter  Stand-in with same interface, adapt interface as needed l Decorator  Is-a and Has-a, e.g., Filters and java I/O l Command  Function/request object, undoable action

Software Design 8.3 Patterns continued l Singleton  Enforce single point of creation, conserve resources l Template method  Hooks filled in by sublcasses l Iterator  Common from previous courses, essential in Java l Strategy  Human player, AI, change algorithm l Forces in a problem lead to solution via appropriate pattern  Should know what GOF is: gang of four

Software Design 8.4 Something old, something new l Compsci 108 has used Java since 1996 always with C++  Before ’96 used Tcl/Tk once and Python once  In Fall '04 CPS 6/100 moved to Java, consequences?  What is the purpose of Compsci 108? l Is Unix an issue? Command-line? What about all Eclipse?  Do we need to use/understand the command line?  C++, Makefiles, …? l What about groups?  110 model, keep same group always  108 model, chaotic? Re-randomize? Always choice?

Software Design 8.5 Alan Kay, winner of 2004 Turing Award l Alto, Smalltalk, Squeak, Object-Oriented Programming "Don't worry about what anybody else is going to do… The best way to predict the future is to invent it. Really smart people with reasonable funding can do just about anything that doesn't violate too many of Newton's Laws!"

Software Design 8.6 Alan Kay on Education and OO l "By the time I got to school, I had already read a couple hundred books. I knew in the first grade that they were lying to me because I had already been exposed to other points of view. School is basically about one point of view -- the one the teacher has or the textbooks have. They don't like the idea of having different points of view, so it was a battle. Of course I would pipe up with my five-year-old voice." l Java and C++ make you think that the new ideas are like the old ones. Java is the most distressing thing to hit computing since MS-DOS. l I invented the term "Object-Oriented", and I can tell you I did not have C++ in mind.

Software Design 8.7 Compsci 108 l Learn how to read l Learn how to invent your own standards l Learn to work in a group l Learn about issues in developing programs and code l Learn about design methodologies like XP l Should Compsci 108 be a writing course?  Don't you write code?  Don't you revise code?  Is this what the writing requirement is about?  What about writing "in the discipline?

Software Design 8.8 Evaluation l Tagcloud  Started very well, fast feedback, interesting, ???  Tagcloud 2.0 slipped too much l Battleship/Fennec  Individually interesting, what about group?  No chance for 2.0, but face-to-face grading worked for me l Videri  Good, but could have been better  Not enough help with appropriate tools? l Web 2.0/Ajax  Continue? What needs to be improved?

Software Design 8.9 Evaluation continued l Test Open/Closed, Tell/Ask  After grading, happy with results, should have been a month earlier l Readings  Really? We did readings?  Books, l Code examples  Need to have groups do code walkthroughs to class  Going over code in class?  Refactoring projects for all code discussed?

Software Design 8.10 Future of Compsci 108 l Start with Java, end with C++? Python? Ruby? Ajax?  Where does C and C++ programming go l Use Java, concentrate on web programming?  PHP? Other alternatives? l Where does it fit in Compsci/Engineering/Bioinformatics?  Should we be concerned about these? l Followup courses?  109? Mentor?