me |
Research | Publications |
Teaching | Students | CV | Software | Funding | Activities |
Lectures |
Reading, Assignments, Tutorials |
|
Week 1 9/26 9/28 |
Introduction - Lecture 1
Overview Unified Modeling Languages: Lecture 2-Use Case and State Chart in UML Class Diagram, Sequence Diagram Overview of UML |
Lab: Team Formation and
Introduction, Part A Requirements |
Week 2 10/3 10/5 |
Unified
Modeling Languages: Lecture 3-Use Case and State Chart in UML Class Diagram, Sequence Diagram Overview of UML Design Principles: Information Hiding Lecture 4-Information Hiding KWIC Code Example |
UML
Tutorial Article: On the Criteria to be used in decomposing systems into modules Lab: Part A Requirements Due |
Week 3 10/10 10/12 |
Design Patterns Strategy, Observer, Mediator Lecture 5-Design Patterns Part A Design Patterns Abstract Factory, Factory Method Lecture 6-Design Patterns Part B Assignment 1 is out on Monday 10/10. |
Lab: Discussion on Design Patterns Discussion
on Part B Requirements. 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/17 10/19 |
Design
Patterns Singleton, Command, Adaptor Lecture 7-Design Patterns Part C Design Patterns Template Method, State, Flyweight Lecture 8-Design Patterns Part D Design Pattern Skeleton Code Snippets Assignment 1 is due on Wednesday 10/19 11:59PM |
Lab: Discussion on Design
Patterns 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/24 10/26 (Midterm) |
Application of Design Patterns and Refactoring
in Practice Lecture 9- Application of Design Patterns and Refactoring Practices Midterm is 10/26 Wednesday |
Lab: Lecture
on Modern Software Teams, Processes,
and Build Management Lecture 8-Build Management |
Week 6 10/31 11/2 |
Lecture 10-Testing Part 1 Statement, Branch, and Path Coverage Testing Activity Notes and Solutions Lecture 11-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 7 11/7 11/9 |
Testing Lecture 12-Testing Part 3 Regression Test Selection Discussion on Modern Testing Techniques Model Based Testing Mutation Testing Lecture 13-Modern Testing Techniques |
No Lab on Friday 11/11: Cancelled on Veterans'
Day |
Week 8 11/14 11/16 |
Hoare Logic Weakest Precondition Lecture 14-Hoare Logic Part 1 Code Inspection Activity Notes and Solutions Assignment 2 is out on Monday 11/14. Hoare Logic Lecture 15-Hoare Logic Part 2 Modern Code Review |
Lab on Friday 11/18: Team 1:1 Meeting with TA |
Week 9 11/21 11/23 (No Class) |
Hoare Logic Lecture 16-Hoare Logic Part 3 Loop Invariant |
No Lab on Friday 11/25, Thanksgiving |
Week 10 11/28 11/30 |
Final Project Presentation Part C slides and demo videos are due on Monday 11/28 12pm before class Part C reports are due on Friday 12/2 11:59 PM. Assignment 2 is due on Friday 12/2 11:59PM. |
Lab: Preparation for Final Exam |
Final Exam 12/5 |
Final Exam: on 12/5 Monday 3-6PM |
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.