me |
Research | Publications |
Teaching | Students | CV | Software | Funding | Activities |
Lecture
(#17050). TTH 12:30PM to 2PM in ENS 116. Labs: Tue 6:30-9:30 PM in ENS 307 or Wed 6:30-9:30PM in ENS 307 Office Hours: T 9:00 AM-11:00 AM in ACES 5.118 Teaching Assistant: Ray Qiu |
Lectures
(T/TH) |
Laboratory
|
||
Tool Tutorials |
Assignments, Readings, Quizzes, and Projects | ||
Week 1 (8/30) |
Lecture
1.
Overview |
||
Week 2 (9/4, 9/6) |
Lecture 2. Collaborative Software Development Lecture 3. UML Diagrams Part 1. Requirements Analysis, Use Case and Statecharts |
Tutorial
1a: Subversion Version Control System Tutorial 1b: Project - Saros (Distributed Pair Programming) |
|
Week 3 (9/11, 9/13) |
Lecture
3. UML Diagrams Part 2. Object Oriented Design, Class Diagrams Lecture 3. UML Diagrams Part 3. Sequence Diagrams |
Tutorial 2: UML |
Quiz 1. Subversion and Version Merging (Thursday) |
Week 4 (9/18, 9/20) |
Lecture
4. Unix Part 1. Unix Commands Lecture 4. Unix Part 2. Shell Scripting |
Tutorial 3: Unix Environment and Command-line Utilities and Shell Scripting | Quiz 2. Unix Commands and
UML (Thursday) |
Week 5 (9/25, 9/27) |
Class Presentations. |
Project
Part A. New Feature Proposal. (Due: Tuesday, 12:29PM)
|
|
Week 6 (10/2, 10/4) |
Lecture 5. Information Hiding Principle Lecture 6. Design Patterns Part 1. Abstract Factory, Factory Method |
Tutorial/Exercise 4: UML |
Reading
Assignment 1. Paper Review Report Due in class on Tuesday 12:29PM. On the criteria to be used in decomposing systems into modules, DL Parnas |
Week 7 (10/9, 10/11) |
Lecture
6. Design Patterns Part 2. Singleton, Adapter, Flyweight,
Bridge Lecture 6. Design Patterns Part 3. Observer, Mediator, Strategy, Visitor |
Tutorial
5: Improving Design Design Pattern and Refactoring |
Quiz 3. Information Hiding Principle and Design Patterns (Thursday) |
Week 8 (10/16, 10/18) |
Lecture
7. Refactoring Lecture 8. Testing Part 1. Statement, Branch, and Path Coverage, JUNIT |
Tutorial/Exercise:
Design Patterns |
Assignment I. Analysis of Design Patterns (Report
due in class Thursday 12:29PM) To be released on 10/2 on blackboard. |
Week 9 (10/23, 10/25) |
Lecture
8. Testing Part 2. Coverage, Bounded Iteration, and
Infeasible Paths Lecture 8. Testing Part 3. Symbolic Execution, Test Generation, and Regression Test Selection |
Tutorial 6: JUnit Testing | Reading
Assignment 2. Paper Review Report Due in class on Thursday 12:29 PM. Regression test selection for Java software, M.J. Harrold et al. |
Week 10 (10/30, 11/1) |
Lecture
9. Build Management and Documentation ANT, JAVADOC Lecture 10. Debugging Part 1. Eclipse Debugger and GDB commands |
Tutorial 7: Build Management | Reading
Assignment 3. Paper
Review Report Due in class on Thursday 12:29 PM. Yesterday, my program worked. Today, it does not. Why? |
Week 11 (11/6, 11/8) |
Lecture 10. Debugging Part 2. Delta Debugging: Isolation of Failure-Inducing Inputs/ Program States Lecture 11. Software Inspection Part 1. Code Reviews and Pair Programming |
Tutorial 8: Eclipse Debugger Tutorial 9: Bug Finding & FindBug |
Quiz 4. Testing/ Build Management (Thursday) |
Week 12 (11/13, 11/15) |
Class
Presentations and Demo |
Project Part B. New Feature Implementation Progress. (Due: Tuesday, 12:29PM)
|
|
Week 13 (11/20, 11/22) |
Lecture 11. Software Inspection Part 2. Hoare Logic and Weakest Preconditions Thanksgiving |
(Work on Project Part C) | |
Week 14 (11/27, 11/29) |
Lecture
11.
Software Inspection Part 3. Loop Invariants Lecture 12. Program Analysis Data Flow Analysis and Program Slicing, Memory Safety, Profiler, Style Checker |
Tutorial
10: Program Understanding Exercise: Hoare Logic |
Quiz 5. Bug Finding and Software Inspection (Thursday) |
Week 15 (12/4, 12/6) |
Class
Presentations and Demo |
Project Part C. New Feature Implementation Final Demonstration. (Due: Tuesday, 12:29PM)
|
Students are encouraged to use their personal laptops. It is a student's responsibility to install required software and ensure that it is working correctly. Students are strongly encouraged to install all necessary software systems and environments in the beginning of the class to ensure timely progress of weekly tool tutorials, assignments, and projects. While students are not restricted to using tools approved by the teaching team, it is the student's responsibility to include additional documentation, tool tutorials, manuals, etc., if a student decides to use a different tool. If a student chooses to use tools and environments that are not endorsed by the teaching team and, and as a result, if this makes it inconvenient or unable for the teaching team to grade his or her assignments, the student may not receive any score for the assignments.
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.