me |
Research | Publications |
Teaching | Students | CV | Software | Funding | Activities |
Lectures |
Reading, Assignments, Tutorials |
|
Week 1 9/27 9/29 |
Introduction Unified Modeling Languages: Lecture 1-Use Case and State Chart in UML Class Diagram, Sequence Diagram Overview of UML |
Lab: Team Formation and
Introduction |
Week 2 10/4 10/6 |
Unified
Modeling Languages: Lecture 1-Use Case and State Chart in UML Class Diagram, Sequence Diagram Overview of UML Design Principles: Information Hiding Lecture 2-Information Hiding KWIC Code Example |
UML
Tutorial Article: On the Criteria to be used in decomposing systems into modules Lab: Discussion on Part A Requirements, Project Status Meeting, and UML |
Week 3 10/11 10/13 |
Design Patterns Strategy, Observer, Mediator Lecture 3-Design Patterns Part A Design Patterns Abstract Factory, Factory Method Lecture 4-Design Patterns Part B Assignment 1 is out on Monday 10/11. |
Lab: Discussion on Design Patterns Head First Chapter 1. Overview and Strategy Head First Chapter 2. Observer Head First Chapter 4. Factory Design Patterns: Strategy, Mediator, Observer, FactoryMethod |
Week 4 10/18 10/20 |
Design
Patterns Singleton, Command, Adaptor Lecture 5-Design Patterns Part C Design Patterns Template Method, State, Flyweight Lecture 6-Design Patterns Part D Design Pattern Skeleton Code Snippets Assignment 1 is due on Wednesday 10/20 11:59PM |
Lab: Part A is Due and
Discussion on Part B Requirements.
Head First Chapter 5. Singleton Head First Chapter 6. Command Head First Chapter 7. Adapter and Facade Head First Chapter 8. Template Method Head First Chapter 10. State Design Patterns: Singleton, Adapter, Flyweight Code: Java Code examples of Head First Design Patterns |
Week 5 10/25 10/27 |
Application of Design Patterns and Refactoring
in Practice Lecture 7- Application of Design Patterns and Refactoring Practices |
Lab: Lecture
on Modern Software Teams, Processes,
and Build Management Lecture 8-Build Management |
Week 6 11/1 (Midterm) 11/4 (No class) |
Midterm is on Monday 11/1 in Class. |
Lab: working on Part B |
Week 7 11/8 11/10 |
Lecture 8-Testing Part 1 Statement, Branch, and Path Coverage Testing Activity Notes and Solutions Lecture 9-Testing Part 2 Bounded Iteration, Infeasible Paths, Test Generation, and Symbolic Execution |
Lab: Part B is Due and Discussion on Part C
Requirements. Resources: Article: Symbolic Execution and Program Testing JUnit Tutorial Weakest Precondition--Handwritten Note1.pdf Weakest Precondition--Handwritten Note2.pdf Weakest Precondition--Handwritten Note3.pdf |
Week 8 11/15 11/17 |
Testing Lecture 9.5-Testing Part 3 Regression Test Selection Discussion on Modern Testing Techniques Model Based Testing Mutation Testing Lecture 10-Application of Modern Testing Techniques |
Lab: Preparation for Final Project Resources: Code: Effective Java Code Examples Demonstrated in Class Effective Java Book: Creating and Destroying Objects Methods Common to All Objects Classes and Interfaces Exceptions Generics |
Week 9 11/22 11/24 |
Hoare Logic Weakest Precondition Lecture 11-Hoare Logic Part 1 Code Inspection Activity Notes and Solutions Assignment 2 is out on Monday 11/22. Hoare Logic Lecture 12-Hoare Logic Part 2 Modern Code Review |
No Lab on Friday 11/26, Thanksgiving |
Week 10 11/29 12/1 |
Final Project Presentations Assignment 2 is due on Friday 12/5 11:59PM. |
Sample
final exams will be released on Monday, 11/29. Lab: Preparation for Final Exam |
How Does It Work?
1) Think. The teacher provokes students' thinking
with a question or prompt or observation. The students should
take a few moments (probably not minutes) just to THINK about
the question.
2) Pair. Using designated partners (such as with Clock
Buddies), nearby neighbors, or a deskmate, students PAIR up to
talk about the answer each came up with. They compare their
mental or written notes and identify the answers they think
are best, most convincing, or most unique.
3) Share. After students talk in pairs for a few moments
(again, usually not minutes), the teacher calls for pairs to
SHARE their thinking with the rest of the class. She can do
this by going around in a round-robin fashion, calling on each
pair; or she can take answers as they are called out (or as
hands are raised). Often, the teacher or a designated helper
will record these responses on the board or on the overh
You will work in teams of five to six students in the same TA
section. You should demonstrate that the proposed application
is new and a unique creation. If you implement a feature that
already exists or is very similar to an existing feature in
any past or later version, it will be considered as
plagiarism. When proposing a project, you should investigate
whether it is feasible to implement and test it. You are
expected to perform a live demonstration of your project
during your project presentations. Students in the same team
will not always receive the same grades, and project grades
will account for individual effort and contribution. In each
phase of the projects, students will rate the quality of
projects for other teams as well. The teaching team will
consider the peer feedback and collaboration history when
assigning individual grades. Your TAs will be in
charge of setting project requirements and grading your
projects. The instructor will also attend final
project presentations and provide additional assessments of
your projects. Project activities will include the following
but not limited to:
Üdder
(Spontaneous Event Schedule and Coordination iOS App, CS
130 Team Project Award Winner)
Photo
Hangout (Real Time Collaborative Photo Editing Mobile
App, Runner Up)
Eventful
(Spontaneous Event Schedule and Coordination Android App, Honorable
Mention, Nice
Video)
BitBoard
(Web App and iOS App for Collaborative Whiteboard Sketching, Honorable
Mention)
Beat
Maker (Real Time Audio Editing Mobile App for Dance
Choreography)
Book Cycle
(Textbook Buy and Sell Web App)
Game Set Match
(Improved Match.com with Games)
Hera
(Real Time Music Animation based on Web Audio Characteristics)
MMM My
Meal Manager (Recipe Suggestions based on Inventory
Management)
PiCast
(Video Streaming using Raspberry Pi)
TutorU
(Tutor Finding and Payment Web App)
Vantage
(Social Photo Album Mobile App)
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.
Each member of the university is expected to uphold these values through integrity, honesty, trust, fairness, and respect toward peers and community. In your first week, you must read and sign UCLA's Academic Integrity Statement.
“Section 102.01 of the UCLA Student Conduct Code prohibits
all forms of academic misconduct or research misconduct,
including, but not limited to, cheating, fabrication or
falsification, plagiarism, multiple submissions, facilitating
academic dishonesty, coercion regarding grading or evaluation
of coursework, or unauthorized collaboration. By submitting
your exam for grading, you affirm that your work is solely
your own and that you have not communicated with anyone other
than the instructor and proctors in any way during the exam.”
Q: Why aren't there many programming assignments? I
want to improve my programming skill through this class.
My goal is to help you experience a software project
life cycle by creating concrete artifacts in each stage. Thus,
while software implementation is an important part of the life
cycle, coding is not the main focus of this class. If you are
excited about coding and want to practice more, please select
a project with a significant implementation component or
volunteer to play a key role in implementing your team
project. I can also share pointers to open source projects,
books, and references that could help you to practice your
programming skills further.
Q: Why are we emphasizing theories (such as discrete
math, logic, proof by induction, and program analysis) in a
project-based software laboratory course?
I hope that you can get a good job as an entry level software
engineer, but also succeed in the future as a lead, principal
engineer and architect. This requires you to have not only a
solid coding skill but a theoretical foundation for systematic
design, analysis, testing, and verification methods. In my
opinion, these foundations cannot be easily attained while you
are on the jobs; they are best taught at University.