me |
Research | Publications |
Teaching | Students | CV | Software | Funding | Activities |
All course materials are available in the form of
on-line lecture notes. The Design Patterns textbook is required for the lectures on Software Design only. This book is a reference book for widely used, object-oriented design patterns. In 461L, I cover the most important 10 patterns. While I think it is a good idea to read about other design patterns, only the patterns covered in this class will be in the scope of exams, quizzes, and assignments. Design Patterns: Elements of Reusable Object-Oriented Software |
Lectures (T/TH) | Tool Tutorials and Projects | Assignments, Readings, and Quizzes | |
Week 1 (8/29) |
Lecture
1.
Overview |
Form Project Groups | |
Week 2 (9/3, 9/5) |
Lecture
2. UML Diagrams Part 1. Requirements Analysis, Use Case and Statecharts Preview: Project Part A Expectation Lecture 2. UML Diagrams Part 2. Object Oriented Design, Class Diagrams, Sequence Diagrams |
Form
Project Groups Tutorial 1a: Google App Engine Tutorial 1b: Objectify |
|
Week 3 (9/10, 9/12) |
Lecture
3. Collaborative Software Development Svn, GIT, Diff (Supplementary
slides on GIT) |
Tutorial
2: UML Work on Project Part A |
|
Week 4 (9/17, 9/20) | Lecture
4. Unix Part 1. Unix Commands Lecture 4. Unix Part 2. Shell Scripting New! Shell Script Files Demonstrated in Class Preview: Project Part B Expectation |
Tutorial 3: Subversion Version Control System Work on Project Part A |
Quiz 1. Version Merging, Unix Commands, and UML (Thursday) |
Week 5 (9/24, 9/26) |
Project Part A Presentations Project Part A. New Feature Proposal.
|
Tutorial 4: Unix Environment and Command-line Utilities and Shell Scripting Work on Project Part B |
Links to Project Part A Presentation Videos: Team 1, Team 2, Team 3, Team 4, Team 5, Team 6, Team 7, Team 8, Team 9, Team 10, Team 11, Team 12, Team 13. |
Week 6 (10/1, 10/3) |
Lecture 5. Information Hiding Principle KWIC modularization 1 vs 2 source code Lecture 6. Design Patterns Part 1. Abstract Factory, Factory Method (Please read relevant chapters of the textbook before each class.) Java Code examples of Head First Design Patterns |
Work
on Project Part B |
Reading
Assignment 1. Paper Review Report Due in class on Tuesday. On the criteria to be used in decomposing systems into modules, DL Parnas |
Week 7 (10/8, 10/10) |
Lecture
6. Design Patterns Part 2. Singleton, Adapter, Flyweight,
Bridge Lecture 6. Design Patterns Part 3. Observer, Mediator, Strategy, Visitor (Please read relevant chapters of the textbook before each class.) Handout on design patterns. New! Annotated Lecture Notes: FactoryMethod, Singleton, Adapter, Bridge, Flyweight, Strategy, Mediator, Observer, |
Tutorial
4: Improving Design Work on Project Part B Supplementary Notes on Design Patterns made by Tianyi |
Quiz 2. Unix, Shell Scripting, Information Hiding, Design Patterns
(Thursday) |
Week 8 (10/15, 10/17) |
Project Part B Presentations, Guest Speaker Project Part B. New Feature Implementation Progress
(See Part B Feedback Sheet) |
Tutorial 5: Design Pattern Work on Project Part C |
Guest
Speaker Video: Chris Simoes, VP of Engineering@ Lithium
Technologies. Slides: Software Development after College Project Presentations: City Cyclist, ECE Hub, RubixCube, Who Has It All. ATSnax, Basedrive, CodeWithFriends, WomboCombo, MyFrontPage, PineCone, PuzzleMe, TapHead, WalletSaver. |
Week 9 (10/22, 10/24) |
Lecture
6. Design Patterns Part 4. Design Patterns Handout: Summary Lecture 7. Refactoring + Midpoint Course Survey Refactoring Book Chapter: Replace Conditionals with Polymorphism Midterm (Thursday) |
Tutorial
6: Refactoring Work on Project Part C |
Homework
1. Analysis of Design Patterns and Shell Script Programming (Submit
your report and code to the blackboard before Tuesday 11AM.) Midterm Scope: All materials up to and including Design Patterns. |
Week 10 (10/29, 10/31) |
Lecture
8. Build Management and Documentation ANT, JAVADOC Refactoring Recap Exercise: (1) Refactoring Code Demonstrated in the Class (2) Visitor Code Implemented in the Class ANT Build File and Project Demonstrated in the Class Lecture 9. Testing Part 1. Statement, Branch, and Path Coverage, JUNIT Testing Part 1 Handout JUnit and Test Code Demonstrated in the Class Preview: Project Part C Expectation |
Tutorial 7a: Build Management Work on Project Part C |
|
Week 11 (11/5, 11/7) |
Lecture
9. Testing Part 2. Coverage, Bounded Iteration, and
Infeasible Paths, Test Generation, Symbolic Execution Testing Part 2 Handout and Lecture Notes Guest Lecture: FaultTracer Regression Test Selection and Fault Localization (PhD Candidate, Lingming Zhang) FaultTracer Website |
Tutorial
8: JUnit Testing and Selenium Work on Project Part C |
Quiz 3. Design Patterns, Refactoring,
Testing, Build Management (Thursday) |
Week 12 (11/12, 11/14) |
Lecture
10. Effective Java Programming Part 1 Creating and Destroying Objects Part 2 Methods Common to All Objects Part 3 Classes and Interfaces Lecture 10. Effective Java Programming Part 4 Exceptions (Optional) Part 5 Generics Effective Java Code Examples Demonstrated in Class |
Tutorial
9a: Eclipse Debugger Tutorial 9b: Bug Finding & FindBug |
|
Week 13 (11/19, 11/21) |
Project Part C
Presentations and Demo Project C. Final Demonstration
(Peer Evaluation Sheet)(See Part C Feedback Sheet) Guest Speaker: Dr. Colin Dixon at IBM Research (Thursday 22nd) |
Project
Presentations: ATSnax Basedrive Code With Friends WomboCombo MyFrontPage PuzzleMe Wallet Saver |
|
Week 14 (11/26, 11/28) |
Lecture 11. Inspection and Verification Part 1. Code Reviews and Hoare Logic Code Inspection Hoare Logic Handout Course Instructor Survey No Lecture on Thanksgiving |
No
lab. Enjoy Thanksgiving! |
Reading
Assignment 2. Paper Review Report Due in class on Tuesday Yesterday, my program worked. Today, it does not. Why? |
Week 15 (12/3, 12/5) |
Practice exams are posted here: (1) Final Exam--Fall 2012 (2) Final Exam--Spring 2012 (3) Practice Final--Spring 2012 Lecture 11. Inspection and Verification Part 2. Weakest Preconditions Lecture 11. Inspection and Verification Part 3. Loop Invariant WP-HandwrittenNote1.pdf WP-HandwrittenNote2.pdf WP-HandwrittenNote3.pdf Optional If Time Permits: Lecture 12. Debugging Eclipse Debugger and GDB commands, Delta Debugging |
Verification
Exercise: Hoare Logic |
Homework 2. Testing, Debugging and Inspection, Due on Monday 12/9 11:59 PM |
During this course, I will be asking you to give me feedback on your learning in both informal and formal ways, e.g., including anonymous midpoint survey about how my teaching strategies are helping or hindering your learning. It is very important for me to know your reaction to what we are doing in the class, so I encourage you to respond to these surveys, ensuring that we can create an environment effective for teaching and learning. Occasionally, at the end of the lecture, I will hand out index cards to ask "what is the most important thing you have learned in this class session?" and "what questions do you still have?" This feedback will be anonymous and this is to check your understanding and promote Q&A.
If you can, please use your personal laptop during the labs. We
recommend that you install all necessary software systems and
environments in the beginning of the class to ensure timely
progress of weekly tool tutorials, assignments, and projects.
Unix or Linux installation for BASH shell scripting and running Unix
commands, or MacOS with X11 or Terminal, or Cygwin
installation for Windows OS; Subversion
Client installation or Subclipse
Eclipse plug-in; Account creation in Assembla
and Piazza; Eclipse
Classic 3.7.1 or later versions of Eclipse for Plug-In development;
ArgoUML or other UML diagram
software systems; JUnit; Ant;
Eclipse debugger; gdb; FindBug
and Java
6 or later versions.