me
Research Publications
Teaching Students CV Software Funding Activities

CS 130: Software Engineering, Fall 2017

Instructor: Dr. Miryung Kim (BH 4532H)
    Lectures: MW 12PM to 1:50PM, ROYCE 362       
    Office Hours: M 11:00 AM to 11:45 AM or by appointment
    Midterm is Monday 10/30 12-2PM in Class
    Final Exam is Monday 12/4 12-2PM in Class
    Final Presentation is Friday December 15th 2017, 3:00pm-6:00pm (Official final exam time reserved by University)

General Description  

We focus on providing hands-on experience in designing and developing large-scale software systems. You will generate concrete software engineering artifacts at all stages of the software life-cycle. You will learn systematic engineering methods for large-scale software development: design and modeling methods; collaborative development environment; object-oriented design patterns and refactoring; build & integration; unit testing & regression testing; bug finding; software inspection and verification.   

My goal is to teach systematic software development methods and tools in the context of developing a software system in collaboration with other students. Systematic design, construction, verification, and evolution methods include
  • Object-oriented design patterns
  • Refactoring
  • Unit testing, test coverage, and test generation
  • Hoare logic, preconditions, post-conditions, and loop invariants 
In the beginning of the class, I will ask you to fill out a background survey on what you are hoping to learn from this class. In the subsequent lecture, I will discuss how your expectations are aligned with and/or different from what to be covered and emphasized in the class.

Class Schedule, Reading List, and Project Milestones


Lectures
Reading, Assignments, Tutorials
Week 1
10/2
10/4
Introduction

Design Principles:
Information Hiding
Lecture 2-Information Hiding
KWIC Code Example
Lab: Team Formation and UML
Lecture 1-Use Case and State chart in UML
Class Diagram, Sequence Diagram
Overview of UML
UML Tutorial

Article: On the Criteria to be used in decomposing systems into modules
Week 2
10/9
10/11
Guest Lecture from Microsoft Research: Software Engineering Research in Industry

Design Patterns

Strategy, Observer, Mediator
Lecture 3-Design Patterns Part A
Lab: Discussion on Part A Requirements, 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/16
10/18
Design Patterns
Abstract Factory, Factory Method
Lecture 4-Design Patterns Part B
Assignment 1 is out on Monday 10/16.

Design Patterns
Singleton, Command, Adaptor
Lecture 5-Design Patterns Part C
Quiz 1 (Wednesday 10/18 in class)
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 4
10/23
10/25 
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
Assignment 1 is due on Wednesday 10/25 11:59PM
Lab: Part A is Due and Discussion on Part B Requirements.
Week 5
10/30 (Midterm)
11/2
Midterm (Monday 10/30 in Class)

Testing
Statement, Branch, and Path Coverage
Lecture 8-Testing Part 1
Testing Activity Notes and Solutions
Lab: Lecture on Modern Software Teams, Processes, and Build Management
Lecture 8-Build Management
Week 6
11/6
11/8
Testing
Bounded Iteration, Infeasible Paths, Test Generation, and Symbolic Execution
Lecture 9-Testing Part 2
Quiz 2 (Monday 11/6 in class)

Lecture 9.5-Testing Part 3
Regression Test Selection
No Lab on Friday 11/10, Veterans Day
Week 7
11/13
11/15

Discussion on Modern Testing Techniques
Model Based Testing
Mutation Testing
Lecture 10-Application of Modern Testing Techniques

Hoare Logic
Weakest Precondition and Loop Invariant
Lecture 11-Hoare Logic Part 1
Code Inspection Activity Notes and Solutions
Quiz 3 (Wednesday 11/15 in Class)
Assignment 2 is out on Wednesday 11/15.
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/20
11/22 (No Class)
Hoare Logic
Lecture 12-Hoare Logic Part 2
Modern Code Review

No Class on 11/22 Wednesday- Enjoy Thanksgiving

No Lab on Friday 11/24, Thanksgiving

Sample final exams will be released on Monday, 11/20.
Week 9
11/27
11/29
Effective Java and Software Processes
Creating and Destroying Objects
Methods Common to All Objects
Lecture 14-Effective Java Part 1

Effective Java and Software Processes
Classes and Interfaces
Exceptions
Lecture 15-Effective Java Part 2
Quiz 4 (Wednesday 11/29 in Class)
Assignment 2 is due on Wednesday 11/29 11:59PM.
Lab: Preparation for Final Exam

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 10 
12/4 (Final)
12/6 (No Class)
Final Exam is Monday 12/4 in Class
No Class on 12/6 Wednesday: Working on Projects

Final Presentations during Final Exam Time on 12/15 3-6pm
Lab: Working on Projects

Grading

Project 35%
Quizzes 9% (3 quizzes, 3% each) 
Midterm 20%
Final 25%
Homework 8% (2 assignment, 4% each)
Participation 3%

Class Discussion: Think Pair Share

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 overhead.

Team Project

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:

  1. a new feature proposal and presentation (6%)
  2. a midpoint implementation and testing progress report and presentation (11%)
  3. a final demonstration, presentation, and a youtube video about your project demo (18%): For example, you can take a look at sample videos created by students who took CS 130 in the previous quarter. (See the links above)

Examples: 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)

Quiz

We will have a short quiz on 10/18 (Wed), 11/6 (Mon), 11/15 (Wed), and 11/29 (Wed). The instructor cannot accommodate quizzes on a different date. However, we will count the best 3 quizzes out of 4 quizzes. Each quiz should take about 15 to 20 minutes. 

Project report and presentation grading scheme

Feedback

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.

Academic Integrity

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.

Frequently Asked Questions

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.

Class Policy 

  • You can use your laptops to take notes (no smart phones please).
  • I promise to return graded assignments within two weeks to provide timely feedback to you.
  • Class announcements will be made through Piazza. Not every class announcement will be made available via electronic means.
  • Please use on-line repository services such as GitHub, Assembla or BitBucket for version control and project management. Please provide a read permission to us, so that we can access and grade your project. Your team's collaboration history will be also used for adjusting individual grades within your teams.  
  • Review questions are to help you review concepts and to prepare for quizzes. If you do not know answers to the questions, I'd be happy to go through them with you during my office hours.
  • The instructor cannot accommodate individual scheduling of a midterm and a final exam on different dates.