me |
Research | Publications |
Teaching | Students | CV | Software | Funding | Activities |
Lectures |
Reading, Assignments, Tutorials |
|
Week 1 10/5 (Mon) 10/7 (Wed) |
Introduction Unified Modeling Languages: Lecture 1-Use Case and State Chart in UML Class Diagram, Sequence Diagram Overview of UML |
Section Week 0: Video Introduction Introduction Video Submission (CCLE) Section Week 1: UML Tutorial Team Formation |
Week 2 10/12 (Mon) 10/14 (Wed) |
Design
Principles: Information Hiding Lecture 2-Information Hiding KWIC Code Example Design Patterns Strategy, Observer, Mediator Lecture 3-Design Patterns Part A |
Resources: Article: On the Criteria to be used in decomposing systems into modules Section: Modeling, Requirements, UML Project Proposal Requirements (Requirements, User Scenarios, UML Design) Individual Team Check-in with TA |
Week 3 10/19 (Mon) 10/21 (Wed) |
Design Patterns Abstract Factory, Factory Method Lecture 4-Design Patterns Part B Singleton, Command, Adaptor Lecture 5-Design Patterns Part C |
Resources: Head First Chapter 1. Overview and Strategy Head First Chapter 2. Observer Head First Chapter 4. Factory Design Patterns: Strategy, Mediator, Observer, FactoryMethod Section: Design Patterns Project Proposal is due on 10/23 Friday 11:59 PM. Individual Team Check-in with TA |
Week 4 10/26 (Mon) 10/28 (Wed) |
Design Patterns Template Method, State, Flyweight Lecture 6-Design Patterns Part D Design Pattern Skeleton Code Snippets Application of Design Patterns and Refactoring in Practice Lecture 7- Application of Design Patterns and Refactoring Practices |
Resources: 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 Section: Design Patterns and Exam 1 Prep |
Week 5 11/2 (Mon: Exam 1) 11/4 (Wed) |
Exam 1 will be
made available on Monday 11/2 in Class. Testing Statement, Branch, and Path Coverage Lecture 8-Testing Part 1 Testing Activity Notes and Solutions |
Section: Final Project Requirements-1 (API Design, Test Scenarios) Individual Team Check-in with TA |
Week 6 11/9 (Mon) 11/11(Veterans Day) |
Testing Bounded Iteration, Infeasible Paths, Test Generation, and Symbolic Execution Lecture 9-Testing Part 2 |
Section: Unit Testing and Integration Testing Individual Team Check-in with TA |
Week 7 11/16 (Mon) 11/18 (Wed) |
Testing Lecture 9.5-Testing Part 3 Regression Test Selection Modern Testing Techniques Model Based Testing Mutation Testing Lecture 10-Application of Modern Testing Techniques |
Resources: Article: Symbolic Execution and Program Testing JUnit Tutorial Section: Final Project Requirements-2 (Code, Video) Individual Team Check-in with TA |
Week 8 11/23 (Mon) 11/25 (Thanksgiving) |
Hoare Logic Weakest Precondition Lecture 11-Hoare Logic Part 1 Code Inspection Activity Notes and Solutions |
Section: Q&A on Exam 2 and Sample Questions |
Week 9 11/30 (Mon) 12/2 (Wed: Exam 2) |
Hoare Logic Lecture 12-Hoare Logic Part 2 Modern Code Review |
Weakest Precondition--Handwritten Note1.pdf Weakest Precondition--Handwritten Note2.pdf Weakest Precondition--Handwritten Note3.pdf Section: Final Project Preparation and Q&A Final Project Outcome is due on Friday, December 4, at 11:59 PM. |
Week 10 12/7 (Mon) 12/9 (Wed) |
Final Presentations |
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.