me |
Research | Publications |
Teaching | Students | CV | Software | Funding | Activities |
Lectures |
Reading, Assignments, Tutorials |
|
Week 1 9/28 9/30 |
Introduction Design Notation Use Case and State chart in UML Class Diagram, Sequence Diagram Lecture 1-UML Design Principles: Information Hiding Lecture 2-Information Hiding KWIC Code Example |
Lab:
Team Formation Lab: Discussion on Part A Requirements Overview of UML UML Tutorial Article: On the Criteria to be used in decomposing systems into modules |
Week 2 10/5 10/7 |
Design Patterns Strategy, Observer, Mediator Abstract Factory, Factory Method Lecture 3-Design Patterns Part A Lecture 4-Design Patterns Part B Quiz 1 (10/7 in Class) |
Lab: Project Status Meeting and 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 3 10/12 10/14 |
Design Patterns Singleton, Command, Adaptor Template Method, State, Flyweight Lecture 5-Design Patterns Part C Lecture 6-Design Patterns Part D Design Pattern Skeleton Code Snippets Assignment 1 is due on Wednesday 11:59 PM. |
Lab: Discussion on Part B Requirements (Part A is Due)
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 4 10/19 10/21 (Midterm) |
Discussion on Modern Software
Teams, Processes, and Build Management Lecture 7-Build Management Midterm (10/21 in Class) |
Lab: Discussion on Design Patterns |
Week 5 10/26 10/28 |
Testing Statement, Branch, and Path Coverage Testing Bounded Iteration, Infeasible Paths, Test Generation, and Symbolic Execution Lecture 8-Testing Part 1 Lecture 9-Testing Part 2 Regression Test Selection Testing Activity Notes and Solutions Quiz 2 (10/28 in Class) |
Article:
Symbolic Execution and Program Testing JUnit Tutorial Lab: Discussion on Part C Requirements (Part B is Due) |
Week 6 11/2 11/4 |
Hoare Logic Weakest Precondition and Loop Invariant Lecture 10-Hoare Logic Part 1 Lecture 11-Hoare Logic Part 2 Code Inspection Activity Notes and Solutions |
Weakest
Precondition-HandwrittenNote1.pdf Weakest Precondition-HandwrittenNote2.pdf Weakest Precondition-HandwrittenNote3.pdf |
Week 7 11/9 11/11 (No Class Veterans Day) |
Software
Verification Guest Lecture: Dr. Madan Musuvathi Assignment 2 is due on Wednesday 11:59 PM. Quiz 3 (11/9 in Class) |
Lab:
Discussion on Agile Process / XP Programming |
Week 8 11/16 11/18 |
Discussion on Modern Code Review and
Testing Modern Code Review Practices Model Based Testing Mutation Testing Lecture 12-Code Review and Testing Discussion Effective Java Creating and Destroying Objects Methods Common to All Objects Classes and Interfaces Exceptions Lecture 13-Effective Java Part 1 Lecture 14-Effective Java Part 2 Quiz 4 (11/18 in Class) |
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 Sample Final Exams (1) Practice Exam 1 (2) Practice Exam 2 (3) Practice Exam 3 (4) Practice Exam 4 Preliminary Part C is due 11/18 11:59PM. Please send your assignment to the partner team who will be reviewing your project, cc-ing the instructor and the TA. Lab (11/20): Peer Evaluation. Please use the lab hours to assess the partner team's project. |
Week 9 Thanksgiving 11/23 (No Class) 11/25 (No Class) |
No class: please work on your project
and enjoy Thanksgiving. |
Peer Evaluation of Another Team's Project is due 11/25 11:59PM. |
Week 10 (Students Project Presentations) 11/30 12/2 |
Final
Project is Due before Class on Monday Guest panelists from local software companies and venture firms |
Student
Projects Video from Spring 2015 Ü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) Barter (Improved Craigslist+Tinder like experience for iOS Buy-Sell-Trade) Beat Maker (Real Time Audio Editing Mobile App for Dance Choreography) Book Cycle (Textbook Buy and Sell Web App) Diet&Fit Motivation (Calorie Counting and Fitness Recommendation 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) PackManager (Packing Suggestion App for Travels based on Historical Weather Patterns) Pantry (Pantry Inventory Food Expiration Notification) PiCast (Video Streaming using Raspberry Pi) TutorU (Tutor Finding and Payment Web App) Vantage (Social Photo Album Mobile App) |
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 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
overhead
You will work in teams of eight to ten 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 and rank individual contributions within
the teams and will rate the quality of projects for other teams. The
teaching team will consider these peer evaluation reports when
assigning individual grades. Your TAs will be in charge of
setting project requirements and grading your projects. The
instructor will also attend your midterm and final project
presentations and provide additional assessments of your projects.
Project activities will include the following but not limited to:
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.
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 not only get a good job as an entry level software
engineer, but 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.