619 Final Review Last updated Spring 2008 © 2003 -2008: Paul Ammann.

Slides:



Advertisements
Similar presentations
Mutability SWE 332 Fall 2011 Paul Ammann. SWE 3322 Data Abstraction Operation Categories Creators Create objects of a data abstraction Producers Create.
Advertisements

Data Abstraction II SWE 619 Software Construction Last Modified, Spring 2009 Paul Ammann.
CSc 2310 Principles of Programming (Java)
5/15/2015Assoc. Prof. Stoyan Bonev1 Assoc. Prof. Stoyan Bonev, PhD Computer Science dept. American University in Bulgaria
6/10/2015Assoc. Prof. Stoyan Bonev1 Assoc. Prof. Stoyan Bonev, PhD Computer Science dept American University in Bulgaria
1 SWE Software Testing and Quality Assurance Fall Semester (081) King Fahd University of Petroleum & Minerals Information & Computer.
CS/CMPE 535 – Machine Learning Outline. CS Machine Learning (Wi ) - Asim LUMS2 Description A course on the fundamentals of machine.
ICS 201 Course Overview.
CMSC 132: Object-Oriented Programming II
CMSC 132: Object-Oriented Programming II Nelson Padua-Perez William Pugh Department of Computer Science University of Maryland, College Park.
1-1 ICS201: Introduction To Computer Science King Fahd University of Petroleum & Minerals College of Computer Science & Engineering Information & Computer.
Course Material: webcourses.kfupm.edu.sa
Feb. 23, 2004CS WPI1 CS 509 Design of Software Systems Lecture #5 Monday, Feb. 23, 2004.
UFCEPM-15-M Object-oriented Design and Programming Jin Sa.
EET 4250: Microcomputer Architecture Fall 2009 William Acosta URL:
Object-Oriented Enterprise Application Development Course Introduction.
Introduction to Programming Using C++ Dr. Mohamed Khafagy.
Specifications Liskov Chapter 9 SWE 619 Last Updated Fall 2008.
COMP 151: Computer Programming II Spring Course Topics Review of Java and basics of software engineering (3 classes. Chapters 1 and 2) Recursion.
New experiences with teaching Java as a second programming language Ioan Jurca “Politehnica” University of Timisoara/Romania
1 CSCE Programming Languages Introduction and Course Administration Dr. Hyunyoung Lee 410B HR Bright
Math 125 Statistics. About me  Nedjla Ougouag, PhD  Office: Room 702H  Ph: (312)   Homepage:
1 MSCS 237 Distributed Computing Spring 2006 INSTRUCTOR: Dr. Sheikh Iqbal Ahamed Office: Cudahy Hall 386 Phone: Office Hours: Monday 2:00-3:00pm.
樣式導向設計 (Pattern-Oriented Design) 課程簡介 Ku-Yaw Chang Assistant Professor, Department of Computer Science and Information Engineering.
SE-308 Software Engineering-II 7th Term SE University of Engineering & Technology Taxila, Pakistan Software Engineering Department.
CSc 2310 Principles of Programming (Java) Dr. Xiaolin Hu.
CPS120: Introduction to Computer Science Fall: 2002 Instructor: Paul J. Millis.
1 Abstraction  Identify important aspects and ignore the details  Permeates software development programming languages are abstractions built on hardware.
Sadegh Aliakbary Sharif University of Technology Fall 2012.
CSE 331 SOFTWARE DESIGN & IMPLEMENTATION MIDTERM REVIEW Autumn 2011.
SWE 619 © Paul Ammann Procedural Abstraction and Design by Contract Paul Ammann Information & Software Engineering SWE 619 Software Construction cs.gmu.edu/~pammann/
Advanced Database Course (ESED5204) Eng. Hanan Alyazji University of Palestine Software Engineering Department.
ICS102: Introduction To Computing King Fahd University of Petroleum & Minerals College of Computer Science & Engineering Information & Computer Science.
1 Object-Oriented Programming Using C++ CLASS 1. 2 Review of Syllabus Catalog Description –An introduction to object oriented programming techniques using.
CPS120: Introduction to Computer Science Winter 2002 Instructor: Paul J. Millis.
332 Final Review Last updated Fall 2013 Professor Ammann.
Design Patterns Gang Qian Department of Computer Science University of Central Oklahoma.
Slide 1 Systems Analysis and Design With UML 2.0 An Object-Oriented Approach, Second Edition Chapter 2: Introduction to Object-Oriented Systems Analysis.
Csc1203.  Elmasri and Navathe, “Fundamentals of Database Systems”, 6 th Edition, Addison- Wesley,  Thomas Connolly, Carolyn Begg, “Database Systems:
ICS202 Data Structures King Fahd University of Petroleum & Minerals College of Computer Science & Engineering Information & Computer Science Department.
1 IDLOOPC1998. Object-Oriented Programming Using C++ CLASS 1.
Type Abstraction SWE Spring October 05Kaushik, Ammann Substitution Principle “In any client code, if supertype object is substituted.
CIS 842: Specification and Verification of Reactive Systems Lecture ADM: Course Administration Copyright , Matt Dwyer, John Hatcliff, Robby. The.
 Course Overview Distributed Systems IT332. Course Description  The course introduces the main principles underlying distributed systems: processes,
CS 151: Object-Oriented Design October 15 Class Meeting Department of Computer Science San Jose State University Fall 2013 Instructor: Ron Mak
90-723: Data Structures and Algorithms for Information Processing Copyright © 1999, Carnegie Mellon. All Rights Reserved. 1 Lecture 1: Introduction Data.
Slide 1 Systems Analysis and Design With UML 2.0 An Object-Oriented Approach, Second Edition Chapter 2: Introduction to Object-Oriented Systems Analysis.
Data Abstraction SWE 619 Software Construction Last Modified, Spring 2009 Paul Ammann.
CS151 Introduction to Digital Design Noura Alhakbani Prince Sultan University, College for Women.
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.
ICS 313 Fundamentals of Programming Languages. Catalogue Description  Concepts of Programming Languages: Syntax and semantics, Data types, Control structures,
619 Final Review Last updated Fall 2011 Paul Ammann.
1 Welcome Alireza Humber College Lecture 1 Game 540 Alireza
Database Management Systems
Course Overview CS 4501 / 6501 Software Testing
CSc 1302 Principles of Computer Science II
Introduction to CS/SWE 332
Common Design Patterns
Specifications Liskov Chapter 9
Type Abstraction SWE Spring 2009.
Introduction to Data Structures
Introduction to Programming Using C++
Introduction to CS/SWE 332
619 Final Review Last updated Spring 2010 © : Paul Ammann.
619 Final Review Fall 2017 Professor Ammann.
Data Structures and Algorithms for Information Processing
First Semester 1439/1440 Welcome 
Course Overview CS 4640 Programming Languages for Web Applications
CSCE 314: Programming Languages Dr. Dylan Shell
Type Abstraction SWE Spring 2013.
Presentation transcript:

619 Final Review Last updated Spring 2008 © : Paul Ammann

619 Final Review © Paul Ammann Instructor: James Baldo Jr., Ph.D. Syllabus: spring09/SWE619BaldoJ.html spring09/SWE619BaldoJ.html

619 Final Review © Paul Ammann Text Books Barbara Liskov with John Guttag. Program Development in Java. Addison Wesley, 2001, ISBN Required. Joshua Bloch. Effective Java. Second Edition. Addison Wesley, 2008, ISBN Required. Note that the Second edition is newly released (May 2008); hence used copies are probably the wrong edition.

619 Final Review © Paul Ammann Course Description To give the students a solid understanding of modern software construction. To prepare students to construct sequential and concurrent programs. To encourage the construction of software systems of high quality. To provide an in-depth study of software construction in a modern language including control structuring and packaging. To address concepts such as information hiding, data abstraction, and object-based and object-oriented software construction are discussed and illustrated. This course is part of the core of the SWE program. This section of 619 uses Java.

619 Final Review © Paul Ammann Assignments Homework is due before class on the due date. Paper and pencil homework should be brought directly to class. Assignments that are Java programs should be submitted to James Baldo Jr. at For programs, you must submit a paper copy as well as the electronic version.

619 Final Review © Paul Ammann Quizzes Each class, except for the first class, begins with a short quiz. Each quiz covers material from the previous session(s). The goal of the quizzes is to keep students abreast of the material covered in class. Because of the quizzes, there is no midterm exam.

619 Final Review © Paul Ammann Missed Homework & Quizzes In recognition of the fact that many students have occasional but unavoidable commitments that preclude attendance at every class, I drop each student's three lowest scores prior to final grade computations. I select the combination of homework and quiz scores most advantageous to the student. For example, I may drop drop 2 quiz scores and 1 homework, or 3 homeworks, or any other combination totaling 3. In view of this policy, late homework is not accepted and there are no make-up quizzes. In fairness to other students, please do not ask for an exception.

619 Final Review © Paul Ammann Final Examination A final exam is held during the University-scheduled exam period. On the final, a student must demonstrate reasonable competence with the course material to receive a satisfactory grade (i.e. B or better) in the class.

619 Final Review © Paul Ammann Grading Grades are computed as: Assignments (33%), Quizzes (33%), Final (34%)

619 Final Review © Paul Ammann Agenda Review Topics Covered Highlight Key Technical Concepts Identify Areas for Study on Final Final May Test Several Concepts in a Given Question Goal: Strong Showing on Final

619 Final Review © Paul Ammann Procedural Abstractions Specifications Preconditions (Requires Clause) Postconditions (Effects Clause) Modifies Clause You Can Read and Write Such Specifications Issues: Minimality Underdetermined Behavior Deterministic Implementations Generality

619 Final Review © Paul Ammann Exceptions Rationale for Exceptions Total vs. Partial Specifications Replacing Preconditions with Defined Behavior Role of “FailureException” Specifications Include Exception Returns Checked vs. Unchecked Exceptions Bloch’s List of Standard Exceptions Masking vs. Reflection

619 Final Review © Paul Ammann Data Abstraction Fundamental Topic Expect Significant Exam Coverage Specifications for: Overview (Typical “Object”) Abstraction Function (toString()) Representation Invariant (repOk()) Methods You Can Expect to Write/Modify Some or All of These Understanding, not Formality, is the Focus

619 Final Review © Paul Ammann More Data Abstraction IntSet and Poly Examples Mutability Reasoning About Data Abstractions Role of Abstraction Function Value of Abstraction Function in Specific Examples Role of Representation Invariant Value of Representation Invariant in Specific Examples Other Issues Exposing the Rep Adequacy

619 Final Review © Paul Ammann Iteration Abstraction Specifying Iterators Preconditions and Postconditions Constraints on Modifications While Generator is in Use Implementing Iterators in Java Abstraction Functions for Iterators Value of Abstraction Function in Specific Examples Abstraction Function For Extensions Allowing a prev() as well as a next() method Allowing a remove() method

619 Final Review © Paul Ammann Type Hierarchy Fundamental Topic Substitution Principle Uses of Type Hierarchy Extending Behavior vs. Multiple Implementations Mechanisms Extensions, Abstract Classes, Interfaces Understanding Overriding vs. Overloading Dynamic Dispatching Apparent Type vs. Actual Type

619 Final Review © Paul Ammann Type Hierarchy Reasoning About Subtypes Signature Rule Rules for Exceptions Methods Rule Preconditions/Postconditions More Rules for Exceptions Properties Rule

619 Final Review © Paul Ammann Polymorphic Abstraction Element Subtype vs. Related Subtype Comparable vs Comparator Addable vs. Adder Be Prepared to Analyze and/or Complete an Implementation

619 Final Review © Paul Ammann Concurrency Simple Thread Interactions Shared Access to Mutable Data Synchronized Methods Possible Executions in the Absence of Synchronization Roles for wait() and notify()

619 Final Review © Paul Ammann Specification Checking Specifications for Common Properties Temporal Logic for Specification Computational Tree Logic (CTL) Linear Temporal Logic (LTL) Simple Specification Patterns KSU material KSU Huth and Ryan is also a excellent source Huth and Ryan

619 Final Review © Paul Ammann Methods Common to All Objects equals() Transitivity, Symmetry, Substitution for Subtypes hashcode() Consistency with equals() toString() clone() Why is Liskov’s clone() (page 97) wrong? Comparable

619 Final Review © Paul Ammann Classes and Interfaces Immutability Why it is Preferable How to Achieve Composition vs. Inheritance Why is Composition Preferable? Potential Problems for Inheritance Mechanisms to Prohibit Inheritance

619 Final Review © Paul Ammann Specifications Specificand Sets Generality vs. Restrictiveness Redundancy Definitions Examples Relevance to Type Abstraction Methods Rule

619 Final Review © Paul Ammann Design Patterns Introduction to Design Patterns Characterization of Patterns Name Problem Solution Consequences Example Patterns Factory, Singleton, Bridge, Decorator, Command, Iterator, State, Template

619 Final Review © Paul Ammann Secure Programming Introduction to Secure Implementation What is software NOT supposed to do? Bugs Misuse Cases Vulnerabilities/Exploits You need to think about the bad guy! Most vulnerabilities are simple mistakes YOUR software can be better

619 Final Review © Paul Ammann Special Topics Junit What is Junit How to use Junit How to write tests in JUnit How to extract basic tests from a contract Cover each exceptional condition Cover “normal” behavior May require several tests

619 Final Review © Paul Ammann Wrap Up Open Book Open Slides (paper, not electronic) Closed Notes Questions?